' +
'' +
'
' +
'
' +
@@ -81,6 +81,7 @@
if (initParams.width) {
modalDialog.width(initParams.width);
+ modalContent.width(initParams.width);
}
if (initParams.height) {
modalContent.height(initParams.height);
@@ -313,6 +314,7 @@
//used by both /lams_central/web/main.jsp and /lams_central/web/lti/addlesson.jsp pages
function showAuthoringDialog(learningDesignID, relaunchMonitorLessonID){
+ debugger;
var dialog = showDialog('dialogAuthoring', {
'height' : Math.max(300, $(window).height() - 30),
'width' : Math.max(600, Math.min(1280, $(window).width() - 60)),
@@ -397,11 +399,13 @@
//used by Page.tag
function showMyPortraitDialog() {
+ debugger;
showDialog("dialogMyProfile", {
'title' : "Portrait",
'modal' : true,
'width' : Math.max(380, Math.min(770, $(window).width() - 60)),
'open' : function() {
+ debugger;
var dialog = $(this);
// load contents after opening the dialog
$('iframe', dialog).attr('src', LAMS_URL + 'index.do?redirect=portrait&isReturnButtonHidden=true');
Index: lams_central/web/includes/javascript/jquery.sharrre.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/jquery.sharrre.js (revision 0)
+++ lams_central/web/includes/javascript/jquery.sharrre.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,619 @@
+/*!
+ * Sharrre.com - Make your sharing widget!
+ * Version: beta 1.3.5
+ * Author: Julien Hany
+ * License: MIT http://en.wikipedia.org/wiki/MIT_License or GPLv2 http://en.wikipedia.org/wiki/GNU_General_Public_License
+ */
+
+;
+(function($, window, document, undefined) {
+
+ /* Defaults
+ ================================================== */
+ var pluginName = 'sharrre',
+ defaults = {
+ className: 'sharrre',
+ share: {
+ googlePlus: false,
+ facebook: false,
+ twitter: false,
+ digg: false,
+ delicious: false,
+ stumbleupon: false,
+ linkedin: false,
+ pinterest: false
+ },
+ shareTotal: 0,
+ template: '',
+ title: '',
+ url: document.location.href,
+ text: document.title,
+ urlCurl: 'sharrre.php', //PHP script for google plus...
+ count: {}, //counter by social network
+ total: 0, //total of sharing
+ shorterTotal: true, //show total by k or M when number is to big
+ enableHover: true, //disable if you want to personalize hover event with callback
+ enableCounter: true, //disable if you just want use buttons
+ enableTracking: false, //tracking with google analitycs
+ hover: function() {}, //personalize hover event with this callback function
+ hide: function() {}, //personalize hide event with this callback function
+ click: function() {}, //personalize click event with this callback function
+ render: function() {}, //personalize render event with this callback function
+ buttons: { //settings for buttons
+ googlePlus: { //http://www.google.com/webmasters/+1/button/
+ url: '', //if you need to personnalize button url
+ urlCount: false, //if you want to use personnalize button url on global counter
+ size: 'medium',
+ lang: 'en-US',
+ annotation: ''
+ },
+ facebook: { //http://developers.facebook.com/docs/reference/plugins/like/
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ action: 'like',
+ layout: 'button_count',
+ width: '',
+ send: 'false',
+ faces: 'false',
+ colorscheme: '',
+ font: '',
+ lang: 'en_US'
+ },
+ twitter: { //http://twitter.com/about/resources/tweetbutton
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ count: 'horizontal',
+ hashtags: '',
+ via: '',
+ related: '',
+ lang: 'en'
+ },
+ digg: { //http://about.digg.com/downloads/button/smart
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ type: 'DiggCompact'
+ },
+ delicious: {
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ size: 'medium' //medium or tall
+ },
+ stumbleupon: { //http://www.stumbleupon.com/badges/
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ layout: '1'
+ },
+ linkedin: { //http://developer.linkedin.com/plugins/share-button
+ url: '', //if you need to personalize url button
+ urlCount: false, //if you want to use personnalize button url on global counter
+ counter: ''
+ },
+ pinterest: { //http://pinterest.com/about/goodies/
+ url: '', //if you need to personalize url button
+ media: '',
+ description: '',
+ layout: 'horizontal'
+ }
+ }
+ },
+ /* Json URL to get count number
+ ================================================== */
+ urlJson = {
+ googlePlus: "",
+
+ //new FQL method by Sire
+ facebook: "https://graph.facebook.com/fql?q=SELECT%20url,%20normalized_url,%20share_count,%20like_count,%20comment_count,%20total_count,commentsbox_count,%20comments_fbid,%20click_count%20FROM%20link_stat%20WHERE%20url=%27{url}%27&callback=?",
+ //old method facebook: "http://graph.facebook.com/?id={url}&callback=?",
+ //facebook : "http://api.ak.facebook.com/restserver.php?v=1.0&method=links.getStats&urls={url}&format=json"
+
+ twitter: "http://cdn.api.twitter.com/1/urls/count.json?url={url}&callback=?",
+ digg: "http://services.digg.com/2.0/story.getInfo?links={url}&type=javascript&callback=?",
+ delicious: 'http://feeds.delicious.com/v2/json/urlinfo/data?url={url}&callback=?',
+ //stumbleupon: "http://www.stumbleupon.com/services/1.01/badge.getinfo?url={url}&format=jsonp&callback=?",
+ stumbleupon: "",
+ linkedin: "http://www.linkedin.com/countserv/count/share?format=jsonp&url={url}&callback=?",
+ pinterest: "http://api.pinterest.com/v1/urls/count.json?url={url}&callback=?"
+ },
+ /* Load share buttons asynchronously
+ ================================================== */
+ loadButton = {
+ googlePlus: function(self) {
+ var sett = self.options.buttons.googlePlus;
+ //$(self.element).find('.buttons').append('
');
+ $(self.element).find('.buttons').append('
');
+ window.___gcfg = {
+ lang: self.options.buttons.googlePlus.lang
+ };
+ var loading = 0;
+ if (typeof gapi === 'undefined' && loading == 0) {
+ loading = 1;
+ (function() {
+ var po = document.createElement('script');
+ po.type = 'text/javascript';
+ po.async = true;
+ po.src = '//apis.google.com/js/plusone.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(po, s);
+ })();
+ } else {
+ gapi.plusone.go();
+ }
+ },
+ facebook: function(self) {
+ var sett = self.options.buttons.facebook;
+ $(self.element).find('.buttons').append('
');
+ var loading = 0;
+ if (typeof FB === 'undefined' && loading == 0) {
+ loading = 1;
+ (function(d, s, id) {
+ var js, fjs = d.getElementsByTagName(s)[0];
+ if (d.getElementById(id)) {
+ return;
+ }
+ js = d.createElement(s);
+ js.id = id;
+ js.src = '//connect.facebook.net/' + sett.lang + '/all.js#xfbml=1';
+ fjs.parentNode.insertBefore(js, fjs);
+ }(document, 'script', 'facebook-jssdk'));
+ } else {
+ FB.XFBML.parse();
+ }
+ },
+ twitter: function(self) {
+ var sett = self.options.buttons.twitter;
+ $(self.element).find('.buttons').append('');
+ var loading = 0;
+ if (typeof twttr === 'undefined' && loading == 0) {
+ loading = 1;
+ (function() {
+ var twitterScriptTag = document.createElement('script');
+ twitterScriptTag.type = 'text/javascript';
+ twitterScriptTag.async = true;
+ twitterScriptTag.src = '//platform.twitter.com/widgets.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(twitterScriptTag, s);
+ })();
+ } else {
+ $.ajax({
+ url: '//platform.twitter.com/widgets.js',
+ dataType: 'script',
+ cache: true
+ }); //http://stackoverflow.com/q/6536108
+ }
+ },
+ digg: function(self) {
+ var sett = self.options.buttons.digg;
+ $(self.element).find('.buttons').append('
');
+ var loading = 0;
+ if (typeof __DBW === 'undefined' && loading == 0) {
+ loading = 1;
+ (function() {
+ var s = document.createElement('SCRIPT'),
+ s1 = document.getElementsByTagName('SCRIPT')[0];
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = '//widgets.digg.com/buttons.js';
+ s1.parentNode.insertBefore(s, s1);
+ })();
+ }
+ },
+ delicious: function(self) {
+ if (self.options.buttons.delicious.size == 'tall') { //tall
+ var css = 'width:50px;',
+ cssCount = 'height:35px;width:50px;font-size:15px;line-height:35px;',
+ cssShare = 'height:18px;line-height:18px;margin-top:3px;';
+ } else { //medium
+ var css = 'width:93px;',
+ cssCount = 'float:right;padding:0 3px;height:20px;width:26px;line-height:20px;',
+ cssShare = 'float:left;height:20px;line-height:20px;';
+ }
+ var count = self.shorterTotal(self.options.count.delicious);
+ if (typeof count === "undefined") {
+ count = 0;
+ }
+ $(self.element).find('.buttons').append(
+ '
');
+
+ $(self.element).find('.delicious').on('click', function() {
+ self.openPopup('delicious');
+ });
+ },
+ stumbleupon: function(self) {
+ var sett = self.options.buttons.stumbleupon;
+ $(self.element).find('.buttons').append('
');
+ var loading = 0;
+ if (typeof STMBLPN === 'undefined' && loading == 0) {
+ loading = 1;
+ (function() {
+ var li = document.createElement('script');
+ li.type = 'text/javascript';
+ li.async = true;
+ li.src = '//platform.stumbleupon.com/1/widgets.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(li, s);
+ })();
+ s = window.setTimeout(function() {
+ if (typeof STMBLPN !== 'undefined') {
+ STMBLPN.processWidgets();
+ clearInterval(s);
+ }
+ }, 500);
+ } else {
+ STMBLPN.processWidgets();
+ }
+ },
+ linkedin: function(self) {
+ var sett = self.options.buttons.linkedin;
+ $(self.element).find('.buttons').append('
');
+ var loading = 0;
+ if (typeof window.IN === 'undefined' && loading == 0) {
+ loading = 1;
+ (function() {
+ var li = document.createElement('script');
+ li.type = 'text/javascript';
+ li.async = true;
+ li.src = '//platform.linkedin.com/in.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(li, s);
+ })();
+ } else {
+ window.IN.init();
+ }
+ },
+ pinterest: function(self) {
+ var sett = self.options.buttons.pinterest;
+ $(self.element).find('.buttons').append('
');
+
+ (function() {
+ var li = document.createElement('script');
+ li.type = 'text/javascript';
+ li.async = true;
+ li.src = '//assets.pinterest.com/js/pinit.js';
+ var s = document.getElementsByTagName('script')[0];
+ s.parentNode.insertBefore(li, s);
+ })();
+ }
+ },
+ /* Tracking for Google Analytics
+ ================================================== */
+ tracking = {
+ googlePlus: function() {},
+ facebook: function() {
+ //console.log('facebook');
+ fb = window.setInterval(function() {
+ if (typeof FB !== 'undefined') {
+ FB.Event.subscribe('edge.create', function(targetUrl) {
+ _gaq.push(['_trackSocial', 'facebook', 'like', targetUrl]);
+ });
+ FB.Event.subscribe('edge.remove', function(targetUrl) {
+ _gaq.push(['_trackSocial', 'facebook', 'unlike', targetUrl]);
+ });
+ FB.Event.subscribe('message.send', function(targetUrl) {
+ _gaq.push(['_trackSocial', 'facebook', 'send', targetUrl]);
+ });
+ //console.log('ok');
+ clearInterval(fb);
+ }
+ }, 1000);
+ },
+ twitter: function() {
+ //console.log('twitter');
+ tw = window.setInterval(function() {
+ if (typeof twttr !== 'undefined') {
+ twttr.events.bind('tweet', function(event) {
+ if (event) {
+ _gaq.push(['_trackSocial', 'twitter', 'tweet']);
+ }
+ });
+ //console.log('ok');
+ clearInterval(tw);
+ }
+ }, 1000);
+ },
+ digg: function() {
+ //if somenone find a solution, mail me !
+ /*$(this.element).find('.digg').on('click', function(){
+ _gaq.push(['_trackSocial', 'digg', 'add']);
+ });*/
+ },
+ delicious: function() {},
+ stumbleupon: function() {},
+ linkedin: function() {
+ function LinkedInShare() {
+ _gaq.push(['_trackSocial', 'linkedin', 'share']);
+ }
+ },
+ pinterest: function() {
+ //if somenone find a solution, mail me !
+ }
+ },
+ /* Popup for each social network
+ ================================================== */
+ popup = {
+ googlePlus: function(opt) {
+ window.open("https://plus.google.com/share?hl=" + opt.buttons.googlePlus.lang + "&url=" + encodeURIComponent((opt.buttons.googlePlus.url !== '' ? opt.buttons.googlePlus.url : opt.url)), "", "toolbar=0, status=0, width=900, height=500");
+ },
+ facebook: function(opt) {
+ window.open("http://www.facebook.com/sharer/sharer.php?u=" + encodeURIComponent((opt.buttons.facebook.url !== '' ? opt.buttons.facebook.url : opt.url)) + "&t=" + opt.text + "", "", "toolbar=0, status=0, width=900, height=500");
+ },
+ twitter: function(opt) {
+ window.open("https://twitter.com/intent/tweet?text=" + encodeURIComponent(opt.text) + "&url=" + encodeURIComponent((opt.buttons.twitter.url !== '' ? opt.buttons.twitter.url : opt.url)) + (opt.buttons.twitter.via !== '' ? '&via=' + opt.buttons.twitter.via : ''), "", "toolbar=0, status=0, width=650, height=360");
+ },
+ digg: function(opt) {
+ window.open("http://digg.com/tools/diggthis/submit?url=" + encodeURIComponent((opt.buttons.digg.url !== '' ? opt.buttons.digg.url : opt.url)) + "&title=" + opt.text + "&related=true&style=true", "", "toolbar=0, status=0, width=650, height=360");
+ },
+ delicious: function(opt) {
+ window.open('http://www.delicious.com/save?v=5&noui&jump=close&url=' + encodeURIComponent((opt.buttons.delicious.url !== '' ? opt.buttons.delicious.url : opt.url)) + '&title=' + opt.text, 'delicious', 'toolbar=no,width=550,height=550');
+ },
+ stumbleupon: function(opt) {
+ window.open('http://www.stumbleupon.com/badge/?url=' + encodeURIComponent((opt.buttons.stumbleupon.url !== '' ? opt.buttons.stumbleupon.url : opt.url)), 'stumbleupon', 'toolbar=no,width=550,height=550');
+ },
+ linkedin: function(opt) {
+ window.open('https://www.linkedin.com/cws/share?url=' + encodeURIComponent((opt.buttons.linkedin.url !== '' ? opt.buttons.linkedin.url : opt.url)) + '&token=&isFramed=true', 'linkedin', 'toolbar=no,width=550,height=550');
+ },
+ pinterest: function(opt) {
+ window.open('http://pinterest.com/pin/create/button/?url=' + encodeURIComponent((opt.buttons.pinterest.url !== '' ? opt.buttons.pinterest.url : opt.url)) + '&media=' + encodeURIComponent(opt.buttons.pinterest.media) + '&description=' + opt.buttons.pinterest.description, 'pinterest', 'toolbar=no,width=700,height=300');
+ }
+ };
+
+ /* Plugin constructor
+ ================================================== */
+ function Plugin(element, options) {
+ this.element = element;
+
+ this.options = $.extend(true, {}, defaults, options);
+ this.options.share = options.share; //simple solution to allow order of buttons
+
+ this._defaults = defaults;
+ this._name = pluginName;
+
+ this.init();
+ };
+
+ /* Initialization method
+ ================================================== */
+ Plugin.prototype.init = function() {
+ var self = this;
+ if (this.options.urlCurl !== '') {
+ urlJson.googlePlus = this.options.urlCurl + '?url={url}&type=googlePlus'; // PHP script for GooglePlus...
+ urlJson.stumbleupon = this.options.urlCurl + '?url={url}&type=stumbleupon'; // PHP script for Stumbleupon...
+ }
+ $(this.element).addClass(this.options.className); //add class
+
+ //HTML5 Custom data
+ if (typeof $(this.element).data('title') !== 'undefined') {
+ this.options.title = $(this.element).attr('data-title');
+ }
+ if (typeof $(this.element).data('url') !== 'undefined') {
+ this.options.url = $(this.element).data('url');
+ }
+ if (typeof $(this.element).data('text') !== 'undefined') {
+ this.options.text = $(this.element).data('text');
+ }
+
+ //how many social website have been selected
+ $.each(this.options.share, function(name, val) {
+ if (val === true) {
+ self.options.shareTotal++;
+ }
+ });
+
+ if (self.options.enableCounter === true) { //if for some reason you don't need counter
+ //get count of social share that have been selected
+ $.each(this.options.share, function(name, val) {
+ if (val === true) {
+ //self.getSocialJson(name);
+ try {
+ self.getSocialJson(name);
+ } catch (e) {}
+ }
+ });
+ } else if (self.options.template !== '') { //for personalized button (with template)
+ this.options.render(this, this.options);
+ } else { // if you want to use official button like example 3 or 5
+ this.loadButtons();
+ }
+
+ //add hover event
+ $(this.element).hover(function() {
+ //load social button if enable and 1 time
+ if ($(this).find('.buttons').length === 0 && self.options.enableHover === true) {
+ self.loadButtons();
+ }
+ self.options.hover(self, self.options);
+ }, function() {
+ self.options.hide(self, self.options);
+ });
+
+ //click event
+ $(this.element).click(function() {
+ self.options.click(self, self.options);
+ return false;
+ });
+ };
+
+ /* loadButtons methode
+ ================================================== */
+ Plugin.prototype.loadButtons = function() {
+ var self = this;
+ $(this.element).append('
');
+ $.each(self.options.share, function(name, val) {
+ if (val == true) {
+ loadButton[name](self);
+ if (self.options.enableTracking === true) { //add tracking
+ tracking[name]();
+ }
+ }
+ });
+ };
+
+ /* getSocialJson methode
+ ================================================== */
+ Plugin.prototype.getSocialJson = function(name) {
+ var self = this,
+ count = 0,
+ url = urlJson[name].replace('{url}', encodeURIComponent(this.options.url));
+ if (this.options.buttons[name].urlCount === true && this.options.buttons[name].url !== '') {
+ url = urlJson[name].replace('{url}', this.options.buttons[name].url);
+ }
+ //console.log('name : ' + name + ' - url : '+url); //debug
+ if (url != '' && self.options.urlCurl !== '') { //urlCurl = '' if you don't want to used PHP script but used social button
+ $.getJSON(url, function(json) {
+ if (typeof json.count !== "undefined") { //GooglePlus, Stumbleupon, Twitter, Pinterest and Digg
+ var temp = json.count + '';
+ temp = temp.replace('\u00c2\u00a0', ''); //remove google plus special chars
+ count += parseInt(temp, 10);
+ }
+ //get the FB total count (shares, likes and more)
+ else if (json.data && json.data.length > 0 && typeof json.data[0].total_count !== "undefined") { //Facebook total count
+ count += parseInt(json.data[0].total_count, 10);
+ } else if (typeof json[0] !== "undefined") { //Delicious
+ count += parseInt(json[0].total_posts, 10);
+ } else if (typeof json[0] !== "undefined") { //Stumbleupon
+ }
+ self.options.count[name] = count;
+ self.options.total += count;
+ self.renderer();
+ self.rendererPerso();
+ //console.log(json); //debug
+ })
+ .error(function() {
+ self.options.count[name] = 0;
+ self.rendererPerso();
+ });
+ } else {
+ self.renderer();
+ self.options.count[name] = 0;
+ self.rendererPerso();
+ }
+ };
+
+ /* launch render methode
+ ================================================== */
+ Plugin.prototype.rendererPerso = function() {
+ //check if this is the last social website to launch render
+ var shareCount = 0;
+ for (e in this.options.count) {
+ shareCount++;
+ }
+ if (shareCount === this.options.shareTotal) {
+ this.options.render(this, this.options);
+ }
+ };
+
+ /* render methode
+ ================================================== */
+ Plugin.prototype.renderer = function() {
+ var total = this.options.total,
+ template = this.options.template;
+ if (this.options.shorterTotal === true) { //format number like 1.2k or 5M
+ total = this.shorterTotal(total);
+ }
+
+ if (template !== '') { //if there is a template
+ template = template.replace('{total}', total);
+ $(this.element).html(template);
+ } else { //template by defaults
+ $(this.element).html(
+ '
'
+ );
+ }
+ };
+
+ /* format total numbers like 1.2k or 5M
+ ================================================== */
+ Plugin.prototype.shorterTotal = function(num) {
+ if (num >= 1e6) {
+ num = (num / 1e6).toFixed(2) + "M"
+ } else if (num >= 1e3) {
+ num = (num / 1e3).toFixed(1) + "k"
+ }
+ return num;
+ };
+
+ /* Methode for open popup
+ ================================================== */
+ Plugin.prototype.openPopup = function(site) {
+ popup[site](this.options); //open
+ if (this.options.enableTracking === true) { //tracking!
+ var tracking = {
+ googlePlus: {
+ site: 'Google',
+ action: '+1'
+ },
+ facebook: {
+ site: 'facebook',
+ action: 'like'
+ },
+ twitter: {
+ site: 'twitter',
+ action: 'tweet'
+ },
+ digg: {
+ site: 'digg',
+ action: 'add'
+ },
+ delicious: {
+ site: 'delicious',
+ action: 'add'
+ },
+ stumbleupon: {
+ site: 'stumbleupon',
+ action: 'add'
+ },
+ linkedin: {
+ site: 'linkedin',
+ action: 'share'
+ },
+ pinterest: {
+ site: 'pinterest',
+ action: 'pin'
+ }
+ };
+ _gaq.push(['_trackSocial', tracking[site].site, tracking[site].action]);
+ }
+ };
+
+ /* Methode for add +1 to a counter
+ ================================================== */
+ Plugin.prototype.simulateClick = function() {
+ var html = $(this.element).html();
+ $(this.element).html(html.replace(this.options.total, this.options.total + 1));
+ };
+
+ /* Methode for add +1 to a counter
+ ================================================== */
+ Plugin.prototype.update = function(url, text) {
+ if (url !== '') {
+ this.options.url = url;
+ }
+ if (text !== '') {
+ this.options.text = text;
+ }
+ };
+
+ /* A really lightweight plugin wrapper around the constructor, preventing against multiple instantiations
+ ================================================== */
+ $.fn[pluginName] = function(options) {
+ var args = arguments;
+ if (options === undefined || typeof options === 'object') {
+ return this.each(function() {
+ if (!$.data(this, 'plugin_' + pluginName)) {
+ $.data(this, 'plugin_' + pluginName, new Plugin(this, options));
+ }
+ });
+ } else if (typeof options === 'string' && options[0] !== '_' && options !== 'init') {
+ return this.each(function() {
+ var instance = $.data(this, 'plugin_' + pluginName);
+ if (instance instanceof Plugin && typeof instance[options] === 'function') {
+ instance[options].apply(instance, Array.prototype.slice.call(args, 1));
+ }
+ });
+ }
+ };
+})(jQuery, window, document);
\ No newline at end of file
Index: lams_central/web/includes/javascript/main.js
===================================================================
diff -u -r6dcc39917657070688863ede60eac6f094929d6a -r32670937f259e2c8a712e1dd2cd6bb5731f466c9
--- lams_central/web/includes/javascript/main.js (.../main.js) (revision 6dcc39917657070688863ede60eac6f094929d6a)
+++ lams_central/web/includes/javascript/main.js (.../main.js) (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -172,6 +172,7 @@
function showMyProfileDialog() {
+ debugger;
showDialog("dialogMyProfile", {
'title' : LABELS.MY_PROFILE,
'modal' : true,
Index: lams_central/web/includes/javascript/material-kit.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/material-kit.js (revision 0)
+++ lams_central/web/includes/javascript/material-kit.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,255 @@
+/*!
+
+ =========================================================
+ * Material Kit - v2.0.5
+ =========================================================
+
+ * Product Page: https://www.creative-tim.com/product/material-kit
+ * Copyright 2018 Creative Tim (http://www.creative-tim.com)
+
+ * Designed by www.invisionapp.com Coded by www.creative-tim.com
+
+ =========================================================
+
+ * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+ */
+
+var big_image;
+
+$(document).ready(function() {
+ BrowserDetect.init();
+
+ // Init Material scripts for buttons ripples, inputs animations etc, more info on the next link https://github.com/FezVrasta/bootstrap-material-design#materialjs
+ $('body').bootstrapMaterialDesign();
+
+ window_width = $(window).width();
+
+ $navbar = $('.navbar[color-on-scroll]');
+ scroll_distance = $navbar.attr('color-on-scroll') || 500;
+
+ $navbar_collapse = $('.navbar').find('.navbar-collapse');
+
+ // Activate the Tooltips
+ $('[data-toggle="tooltip"], [rel="tooltip"]').tooltip();
+
+ // Activate Popovers
+ $('[data-toggle="popover"]').popover();
+
+ if ($('.navbar-color-on-scroll').length != 0) {
+ $(window).on('scroll', materialKit.checkScrollForTransparentNavbar);
+ }
+
+ materialKit.checkScrollForTransparentNavbar();
+
+ if (window_width >= 768) {
+ big_image = $('.page-header[data-parallax="true"]');
+ if (big_image.length != 0) {
+ $(window).on('scroll', materialKit.checkScrollForParallax);
+ }
+
+ }
+
+
+});
+
+$(document).on('click', '.navbar-toggler', function() {
+ $toggle = $(this);
+
+ if (materialKit.misc.navbar_menu_visible == 1) {
+ $('html').removeClass('nav-open');
+ materialKit.misc.navbar_menu_visible = 0;
+ $('#bodyClick').remove();
+ setTimeout(function() {
+ $toggle.removeClass('toggled');
+ }, 550);
+
+ $('html').removeClass('nav-open-absolute');
+ } else {
+ setTimeout(function() {
+ $toggle.addClass('toggled');
+ }, 580);
+
+
+ div = '
';
+ $(div).appendTo("body").click(function() {
+ $('html').removeClass('nav-open');
+
+ if ($('nav').hasClass('navbar-absolute')) {
+ $('html').removeClass('nav-open-absolute');
+ }
+ materialKit.misc.navbar_menu_visible = 0;
+ $('#bodyClick').remove();
+ setTimeout(function() {
+ $toggle.removeClass('toggled');
+ }, 550);
+ });
+
+ if ($('nav').hasClass('navbar-absolute')) {
+ $('html').addClass('nav-open-absolute');
+ }
+
+ $('html').addClass('nav-open');
+ materialKit.misc.navbar_menu_visible = 1;
+ }
+});
+
+materialKit = {
+ misc: {
+ navbar_menu_visible: 0,
+ window_width: 0,
+ transparent: true,
+ fixedTop: false,
+ navbar_initialized: false,
+ isWindow: document.documentMode || /Edge/.test(navigator.userAgent)
+ },
+
+ initFormExtendedDatetimepickers: function() {
+ $('.datetimepicker').datetimepicker({
+ icons: {
+ time: "fa fa-clock-o",
+ date: "fa fa-calendar",
+ up: "fa fa-chevron-up",
+ down: "fa fa-chevron-down",
+ previous: 'fa fa-chevron-left',
+ next: 'fa fa-chevron-right',
+ today: 'fa fa-screenshot',
+ clear: 'fa fa-trash',
+ close: 'fa fa-remove'
+ }
+ });
+ },
+
+ initSliders: function() {
+ // Sliders for demo purpose
+ var slider = document.getElementById('sliderRegular');
+
+ noUiSlider.create(slider, {
+ start: 40,
+ connect: [true, false],
+ range: {
+ min: 0,
+ max: 100
+ }
+ });
+
+ var slider2 = document.getElementById('sliderDouble');
+
+ noUiSlider.create(slider2, {
+ start: [20, 60],
+ connect: true,
+ range: {
+ min: 0,
+ max: 100
+ }
+ });
+ },
+
+ checkScrollForParallax: function() {
+ oVal = ($(window).scrollTop() / 3);
+ big_image.css({
+ 'transform': 'translate3d(0,' + oVal + 'px,0)',
+ '-webkit-transform': 'translate3d(0,' + oVal + 'px,0)',
+ '-ms-transform': 'translate3d(0,' + oVal + 'px,0)',
+ '-o-transform': 'translate3d(0,' + oVal + 'px,0)'
+ });
+ },
+
+ checkScrollForTransparentNavbar: debounce(function() {
+ if ($(document).scrollTop() > scroll_distance) {
+ if (materialKit.misc.transparent) {
+ materialKit.misc.transparent = false;
+ $('.navbar-color-on-scroll').removeClass('navbar-transparent');
+ }
+ } else {
+ if (!materialKit.misc.transparent) {
+ materialKit.misc.transparent = true;
+ $('.navbar-color-on-scroll').addClass('navbar-transparent');
+ }
+ }
+ }, 17)
+};
+
+// 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.
+
+function debounce(func, wait, immediate) {
+ var timeout;
+ return function() {
+ var context = this,
+ args = arguments;
+ clearTimeout(timeout);
+ timeout = setTimeout(function() {
+ timeout = null;
+ if (!immediate) func.apply(context, args);
+ }, wait);
+ if (immediate && !timeout) func.apply(context, args);
+ };
+};
+
+var BrowserDetect = {
+ init: function() {
+ this.browser = this.searchString(this.dataBrowser) || "Other";
+ this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "Unknown";
+ },
+ searchString: function(data) {
+ for (var i = 0; i < data.length; i++) {
+ var dataString = data[i].string;
+ this.versionSearchString = data[i].subString;
+
+ if (dataString.indexOf(data[i].subString) !== -1) {
+ return data[i].identity;
+ }
+ }
+ },
+ searchVersion: function(dataString) {
+ var index = dataString.indexOf(this.versionSearchString);
+ if (index === -1) {
+ return;
+ }
+
+ var rv = dataString.indexOf("rv:");
+ if (this.versionSearchString === "Trident" && rv !== -1) {
+ return parseFloat(dataString.substring(rv + 3));
+ } else {
+ return parseFloat(dataString.substring(index + this.versionSearchString.length + 1));
+ }
+ },
+
+ dataBrowser: [{
+ string: navigator.userAgent,
+ subString: "Chrome",
+ identity: "Chrome"
+ },
+ {
+ string: navigator.userAgent,
+ subString: "MSIE",
+ identity: "Explorer"
+ },
+ {
+ string: navigator.userAgent,
+ subString: "Trident",
+ identity: "Explorer"
+ },
+ {
+ string: navigator.userAgent,
+ subString: "Firefox",
+ identity: "Firefox"
+ },
+ {
+ string: navigator.userAgent,
+ subString: "Safari",
+ identity: "Safari"
+ },
+ {
+ string: navigator.userAgent,
+ subString: "Opera",
+ identity: "Opera"
+ }
+ ]
+
+};
+
+var better_browser = '
We are sorry but it looks like your Browser doesn\'t support our website Features. In order to get the full experience please download a new version of your favourite browser.
Thank you!
';
\ No newline at end of file
Index: lams_central/web/includes/javascript/material-kit.js.map
===================================================================
diff -u
--- lams_central/web/includes/javascript/material-kit.js.map (revision 0)
+++ lams_central/web/includes/javascript/material-kit.js.map (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1 @@
+{"version":3,"sources":["_site_kit_free/assets/js/kit-free.js"],"names":["big_image","debounce","func","wait","immediate","timeout","context","this","args","arguments","clearTimeout","setTimeout","apply","$","document","ready","BrowserDetect","init","bootstrapMaterialDesign","window_width","window","width","$navbar","scroll_distance","attr","$navbar_collapse","find","tooltip","popover","length","on","materialKit","checkScrollForTransparentNavbar","checkScrollForParallax","$toggle","misc","navbar_menu_visible","removeClass","remove","addClass","div","appendTo","click","hasClass","transparent","fixedTop","navbar_initialized","isWindow","documentMode","test","navigator","userAgent","initFormExtendedDatetimepickers","datetimepicker","icons","time","date","up","down","previous","next","today","clear","close","initSliders","slider","getElementById","noUiSlider","create","start","connect","range","min","max","slider2","oVal","scrollTop","css","transform","-webkit-transform","-ms-transform","-o-transform","browser","searchString","dataBrowser","version","searchVersion","appVersion","data","i","dataString","string","versionSearchString","subString","indexOf","identity","index","rv","parseFloat","substring","better_browser"],"mappings":"AAiBA,IAAIA,UAgKJ,SAASC,SAASC,EAAMC,EAAMC,GAC7B,IAAIC,EACJ,OAAO,WACN,IAAIC,EAAUC,KAAMC,EAAOC,UAC3BC,aAAaL,GACbA,EAAUM,WAAW,WACpBN,EAAU,KACLD,GAAWF,EAAKU,MAAMN,EAASE,IAClCL,GACCC,IAAcC,GAASH,EAAKU,MAAMN,EAASE,IAvKjDK,EAAEC,UAAUC,MAAM,WACdC,cAAcC,OAGdJ,EAAE,QAAQK,0BAEVC,aAAeN,EAAEO,QAAQC,QAEzBC,QAAUT,EAAE,4BACZU,gBAAkBD,QAAQE,KAAK,oBAAsB,IAErDC,iBAAmBZ,EAAE,WAAWa,KAAK,oBAGrCb,EAAE,4CAA4Cc,UAG9Cd,EAAE,2BAA2Be,UAEc,GAAvCf,EAAE,2BAA2BgB,QAC7BhB,EAAEO,QAAQU,GAAG,SAAUC,YAAYC,iCAGvCD,YAAYC,kCAEQ,KAAhBb,cAEwB,IADxBnB,UAAYa,EAAE,uCACAgB,QACVhB,EAAEO,QAAQU,GAAG,SAAUC,YAAYE,0BAQ/CpB,EAAEC,UAAUgB,GAAG,QAAS,kBAAmB,WACvCI,QAAUrB,EAAEN,MAE+B,GAAxCwB,YAAYI,KAAKC,qBAChBvB,EAAE,QAAQwB,YAAY,YACtBN,YAAYI,KAAKC,oBAAsB,EACvCvB,EAAE,cAAcyB,SACd3B,WAAW,WACTuB,QAAQG,YAAY,YACpB,KAEJxB,EAAE,QAAQwB,YAAY,uBAEtB1B,WAAW,WACTuB,QAAQK,SAAS,YAChB,KAGHC,IAAM,6BACN3B,EAAE2B,KAAKC,SAAS,QAAQC,MAAM,WAC5B7B,EAAE,QAAQwB,YAAY,YAEnBxB,EAAE,OAAO8B,SAAS,oBACjB9B,EAAE,QAAQwB,YAAY,qBAE1BN,YAAYI,KAAKC,oBAAsB,EACvCvB,EAAE,cAAcyB,SACf3B,WAAW,WACRuB,QAAQG,YAAY,YACpB,OAGHxB,EAAE,OAAO8B,SAAS,oBACjB9B,EAAE,QAAQ0B,SAAS,qBAGvB1B,EAAE,QAAQ0B,SAAS,YACnBR,YAAYI,KAAKC,oBAAsB,KAI/CL,YAAc,CACVI,KAAM,CACFC,oBAAqB,EACrBjB,aAAc,EACdyB,aAAa,EACbC,UAAU,EACVC,oBAAoB,EACpBC,SAAUjC,SAASkC,cAAgB,OAAOC,KAAKC,UAAUC,YAG7DC,gCAAiC,WAC7BvC,EAAE,mBAAmBwC,eAAe,CAChCC,MAAO,CACHC,KAAM,gBACNC,KAAM,iBACNC,GAAI,mBACJC,KAAM,qBACNC,SAAU,qBACVC,KAAM,sBACNC,MAAO,mBACPC,MAAO,cACPC,MAAO,mBAKnBC,YAAa,WAEV,IAAIC,EAASnD,SAASoD,eAAe,iBAErCC,WAAWC,OAAOH,EAAQ,CACtBI,MAAO,GACPC,QAAS,EAAC,GAAM,GAChBC,MAAO,CACHC,IAAK,EACLC,IAAK,OAIb,IAAIC,EAAU5D,SAASoD,eAAe,gBAEtCC,WAAWC,OAAOM,EAAS,CACvBL,MAAO,CAAC,GAAI,IACZC,SAAS,EACTC,MAAO,CACHC,IAAK,EACLC,IAAK,QAKhBxC,uBAAwB,WACpB0C,KAAQ9D,EAAEO,QAAQwD,YAAc,EAChC5E,UAAU6E,IAAI,CACVC,UAAa,iBAAmBH,KAAO,QACvCI,oBAAqB,iBAAmBJ,KAAO,QAC/CK,gBAAiB,iBAAmBL,KAAO,QAC3CM,eAAgB,iBAAmBN,KAAO,WAIlD3C,gCAAiC/B,SAAS,WAClCY,EAAEC,UAAU8D,YAAcrD,gBACtBQ,YAAYI,KAAKS,cACjBb,YAAYI,KAAKS,aAAc,EAC/B/B,EAAE,2BAA2BwB,YAAY,uBAGxCN,YAAYI,KAAKS,cAClBb,YAAYI,KAAKS,aAAc,EAC/B/B,EAAE,2BAA2B0B,SAAS,wBAG/C,KAqBP,IAAIvB,cAAgB,CAChBC,KAAM,WACFV,KAAK2E,QAAU3E,KAAK4E,aAAa5E,KAAK6E,cAAgB,QACtD7E,KAAK8E,QAAU9E,KAAK+E,cAAcpC,UAAUC,YAAc5C,KAAK+E,cAAcpC,UAAUqC,aAAe,WAE1GJ,aAAc,SAAUK,GACpB,IAAK,IAAIC,EAAI,EAAGA,EAAID,EAAK3D,OAAQ4D,IAAK,CAClC,IAAIC,EAAaF,EAAKC,GAAGE,OAGzB,GAFApF,KAAKqF,oBAAsBJ,EAAKC,GAAGI,WAEY,IAA3CH,EAAWI,QAAQN,EAAKC,GAAGI,WAC3B,OAAOL,EAAKC,GAAGM,WAI3BT,cAAe,SAAUI,GACrB,IAAIM,EAAQN,EAAWI,QAAQvF,KAAKqF,qBACpC,IAAe,IAAXI,EAAJ,CAIA,IAAIC,EAAKP,EAAWI,QAAQ,OAC5B,MAAiC,YAA7BvF,KAAKqF,sBAA6C,IAARK,EACnCC,WAAWR,EAAWS,UAAUF,EAAK,IAErCC,WAAWR,EAAWS,UAAUH,EAAQzF,KAAKqF,oBAAoB/D,OAAS,MAIzFuD,YAAa,CACT,CAACO,OAAQzC,UAAUC,UAAW0C,UAAW,SAAUE,SAAU,UAC7D,CAACJ,OAAQzC,UAAUC,UAAW0C,UAAW,OAAQE,SAAU,YAC3D,CAACJ,OAAQzC,UAAUC,UAAW0C,UAAW,UAAWE,SAAU,YAC9D,CAACJ,OAAQzC,UAAUC,UAAW0C,UAAW,UAAWE,SAAU,WAC9D,CAACJ,OAAQzC,UAAUC,UAAW0C,UAAW,SAAUE,SAAU,UAC7D,CAACJ,OAAQzC,UAAUC,UAAW0C,UAAW,QAASE,SAAU,WAKhEK,eAAiB"}
\ No newline at end of file
Index: lams_central/web/includes/javascript/material-kit.min.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/material-kit.min.js (revision 0)
+++ lams_central/web/includes/javascript/material-kit.min.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,2 @@
+var big_image;function debounce(a,t,n){var i;return function(){var e=this,r=arguments;clearTimeout(i),i=setTimeout(function(){i=null,n||a.apply(e,r)},t),n&&!i&&a.apply(e,r)}}$(document).ready(function(){BrowserDetect.init(),$("body").bootstrapMaterialDesign(),window_width=$(window).width(),$navbar=$(".navbar[color-on-scroll]"),scroll_distance=$navbar.attr("color-on-scroll")||500,$navbar_collapse=$(".navbar").find(".navbar-collapse"),$('[data-toggle="tooltip"], [rel="tooltip"]').tooltip(),$('[data-toggle="popover"]').popover(),0!=$(".navbar-color-on-scroll").length&&$(window).on("scroll",materialKit.checkScrollForTransparentNavbar),materialKit.checkScrollForTransparentNavbar(),768<=window_width&&0!=(big_image=$('.page-header[data-parallax="true"]')).length&&$(window).on("scroll",materialKit.checkScrollForParallax)}),$(document).on("click",".navbar-toggler",function(){$toggle=$(this),1==materialKit.misc.navbar_menu_visible?($("html").removeClass("nav-open"),materialKit.misc.navbar_menu_visible=0,$("#bodyClick").remove(),setTimeout(function(){$toggle.removeClass("toggled")},550),$("html").removeClass("nav-open-absolute")):(setTimeout(function(){$toggle.addClass("toggled")},580),div='
',$(div).appendTo("body").click(function(){$("html").removeClass("nav-open"),$("nav").hasClass("navbar-absolute")&&$("html").removeClass("nav-open-absolute"),materialKit.misc.navbar_menu_visible=0,$("#bodyClick").remove(),setTimeout(function(){$toggle.removeClass("toggled")},550)}),$("nav").hasClass("navbar-absolute")&&$("html").addClass("nav-open-absolute"),$("html").addClass("nav-open"),materialKit.misc.navbar_menu_visible=1)}),materialKit={misc:{navbar_menu_visible:0,window_width:0,transparent:!0,fixedTop:!1,navbar_initialized:!1,isWindow:document.documentMode||/Edge/.test(navigator.userAgent)},initFormExtendedDatetimepickers:function(){$(".datetimepicker").datetimepicker({icons:{time:"fa fa-clock-o",date:"fa fa-calendar",up:"fa fa-chevron-up",down:"fa fa-chevron-down",previous:"fa fa-chevron-left",next:"fa fa-chevron-right",today:"fa fa-screenshot",clear:"fa fa-trash",close:"fa fa-remove"}})},initSliders:function(){var e=document.getElementById("sliderRegular");noUiSlider.create(e,{start:40,connect:[!0,!1],range:{min:0,max:100}});var r=document.getElementById("sliderDouble");noUiSlider.create(r,{start:[20,60],connect:!0,range:{min:0,max:100}})},checkScrollForParallax:function(){oVal=$(window).scrollTop()/3,big_image.css({transform:"translate3d(0,"+oVal+"px,0)","-webkit-transform":"translate3d(0,"+oVal+"px,0)","-ms-transform":"translate3d(0,"+oVal+"px,0)","-o-transform":"translate3d(0,"+oVal+"px,0)"})},checkScrollForTransparentNavbar:debounce(function(){$(document).scrollTop()>scroll_distance?materialKit.misc.transparent&&(materialKit.misc.transparent=!1,$(".navbar-color-on-scroll").removeClass("navbar-transparent")):materialKit.misc.transparent||(materialKit.misc.transparent=!0,$(".navbar-color-on-scroll").addClass("navbar-transparent"))},17)};var BrowserDetect={init:function(){this.browser=this.searchString(this.dataBrowser)||"Other",this.version=this.searchVersion(navigator.userAgent)||this.searchVersion(navigator.appVersion)||"Unknown"},searchString:function(e){for(var r=0;r
We are sorry but it looks like your Browser doesn\'t support our website Features. In order to get the full experience please download a new version of your favourite browser.
Thank you!
';
+//# sourceMappingURL=_site_kit_free/assets/js/kit-free.js.map
\ No newline at end of file
Index: lams_central/web/includes/javascript/moment.min.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/moment.min.js (revision 0)
+++ lams_central/web/includes/javascript/moment.min.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,2020 @@
+//! moment.js
+//! version : 2.14.1
+//! authors : Tim Wood, Iskren Chernev, Moment.js contributors
+//! license : MIT
+//! momentjs.com
+! function(a, b) {
+ "object" == typeof exports && "undefined" != typeof module ? module.exports = b() : "function" == typeof define && define.amd ? define(b) : a.moment = b()
+}(this, function() {
+ "use strict";
+
+ function a() {
+ return md.apply(null, arguments)
+ }
+ // This is done to register the method called with moment()
+ // without creating circular dependencies.
+ function b(a) {
+ md = a
+ }
+
+ function c(a) {
+ return a instanceof Array || "[object Array]" === Object.prototype.toString.call(a)
+ }
+
+ function d(a) {
+ return "[object Object]" === Object.prototype.toString.call(a)
+ }
+
+ function e(a) {
+ var b;
+ for (b in a)
+ // even if its not own property I'd still call it non-empty
+ return !1;
+ return !0
+ }
+
+ function f(a) {
+ return a instanceof Date || "[object Date]" === Object.prototype.toString.call(a)
+ }
+
+ function g(a, b) {
+ var c, d = [];
+ for (c = 0; c < a.length; ++c) d.push(b(a[c], c));
+ return d
+ }
+
+ function h(a, b) {
+ return Object.prototype.hasOwnProperty.call(a, b)
+ }
+
+ function i(a, b) {
+ for (var c in b) h(b, c) && (a[c] = b[c]);
+ return h(b, "toString") && (a.toString = b.toString), h(b, "valueOf") && (a.valueOf = b.valueOf), a
+ }
+
+ function j(a, b, c, d) {
+ return qb(a, b, c, d, !0).utc()
+ }
+
+ function k() {
+ // We need to deep clone this object.
+ return {
+ empty: !1,
+ unusedTokens: [],
+ unusedInput: [],
+ overflow: -2,
+ charsLeftOver: 0,
+ nullInput: !1,
+ invalidMonth: null,
+ invalidFormat: !1,
+ userInvalidated: !1,
+ iso: !1,
+ parsedDateParts: [],
+ meridiem: null
+ }
+ }
+
+ function l(a) {
+ return null == a._pf && (a._pf = k()), a._pf
+ }
+
+ function m(a) {
+ if (null == a._isValid) {
+ var b = l(a),
+ c = nd.call(b.parsedDateParts, function(a) {
+ return null != a
+ });
+ a._isValid = !isNaN(a._d.getTime()) && b.overflow < 0 && !b.empty && !b.invalidMonth && !b.invalidWeekday && !b.nullInput && !b.invalidFormat && !b.userInvalidated && (!b.meridiem || b.meridiem && c), a._strict && (a._isValid = a._isValid && 0 === b.charsLeftOver && 0 === b.unusedTokens.length && void 0 === b.bigHour)
+ }
+ return a._isValid
+ }
+
+ function n(a) {
+ var b = j(NaN);
+ return null != a ? i(l(b), a) : l(b).userInvalidated = !0, b
+ }
+
+ function o(a) {
+ return void 0 === a
+ }
+
+ function p(a, b) {
+ var c, d, e;
+ if (o(b._isAMomentObject) || (a._isAMomentObject = b._isAMomentObject), o(b._i) || (a._i = b._i), o(b._f) || (a._f = b._f), o(b._l) || (a._l = b._l), o(b._strict) || (a._strict = b._strict), o(b._tzm) || (a._tzm = b._tzm), o(b._isUTC) || (a._isUTC = b._isUTC), o(b._offset) || (a._offset = b._offset), o(b._pf) || (a._pf = l(b)), o(b._locale) || (a._locale = b._locale), od.length > 0)
+ for (c in od) d = od[c], e = b[d], o(e) || (a[d] = e);
+ return a
+ }
+ // Moment prototype object
+ function q(b) {
+ p(this, b), this._d = new Date(null != b._d ? b._d.getTime() : NaN), pd === !1 && (pd = !0, a.updateOffset(this), pd = !1)
+ }
+
+ function r(a) {
+ return a instanceof q || null != a && null != a._isAMomentObject
+ }
+
+ function s(a) {
+ return 0 > a ? Math.ceil(a) || 0 : Math.floor(a)
+ }
+
+ function t(a) {
+ var b = +a,
+ c = 0;
+ return 0 !== b && isFinite(b) && (c = s(b)), c
+ }
+ // compare two arrays, return the number of differences
+ function u(a, b, c) {
+ var d, e = Math.min(a.length, b.length),
+ f = Math.abs(a.length - b.length),
+ g = 0;
+ for (d = 0; e > d; d++)(c && a[d] !== b[d] || !c && t(a[d]) !== t(b[d])) && g++;
+ return g + f
+ }
+
+ function v(b) {
+ a.suppressDeprecationWarnings === !1 && "undefined" != typeof console && console.warn && console.warn("Deprecation warning: " + b)
+ }
+
+ function w(b, c) {
+ var d = !0;
+ return i(function() {
+ return null != a.deprecationHandler && a.deprecationHandler(null, b), d && (v(b + "\nArguments: " + Array.prototype.slice.call(arguments).join(", ") + "\n" + (new Error).stack), d = !1), c.apply(this, arguments)
+ }, c)
+ }
+
+ function x(b, c) {
+ null != a.deprecationHandler && a.deprecationHandler(b, c), qd[b] || (v(c), qd[b] = !0)
+ }
+
+ function y(a) {
+ return a instanceof Function || "[object Function]" === Object.prototype.toString.call(a)
+ }
+
+ function z(a) {
+ var b, c;
+ for (c in a) b = a[c], y(b) ? this[c] = b : this["_" + c] = b;
+ this._config = a,
+ // Lenient ordinal parsing accepts just a number in addition to
+ // number + (possibly) stuff coming from _ordinalParseLenient.
+ this._ordinalParseLenient = new RegExp(this._ordinalParse.source + "|" + /\d{1,2}/.source)
+ }
+
+ function A(a, b) {
+ var c, e = i({}, a);
+ for (c in b) h(b, c) && (d(a[c]) && d(b[c]) ? (e[c] = {}, i(e[c], a[c]), i(e[c], b[c])) : null != b[c] ? e[c] = b[c] : delete e[c]);
+ for (c in a) h(a, c) && !h(b, c) && d(a[c]) && (
+ // make sure changes to properties don't modify parent config
+ e[c] = i({}, e[c]));
+ return e
+ }
+
+ function B(a) {
+ null != a && this.set(a)
+ }
+
+ function C(a, b, c) {
+ var d = this._calendar[a] || this._calendar.sameElse;
+ return y(d) ? d.call(b, c) : d
+ }
+
+ function D(a) {
+ var b = this._longDateFormat[a],
+ c = this._longDateFormat[a.toUpperCase()];
+ return b || !c ? b : (this._longDateFormat[a] = c.replace(/MMMM|MM|DD|dddd/g, function(a) {
+ return a.slice(1)
+ }), this._longDateFormat[a])
+ }
+
+ function E() {
+ return this._invalidDate
+ }
+
+ function F(a) {
+ return this._ordinal.replace("%d", a)
+ }
+
+ function G(a, b, c, d) {
+ var e = this._relativeTime[c];
+ return y(e) ? e(a, b, c, d) : e.replace(/%d/i, a)
+ }
+
+ function H(a, b) {
+ var c = this._relativeTime[a > 0 ? "future" : "past"];
+ return y(c) ? c(b) : c.replace(/%s/i, b)
+ }
+
+ function I(a, b) {
+ var c = a.toLowerCase();
+ zd[c] = zd[c + "s"] = zd[b] = a
+ }
+
+ function J(a) {
+ return "string" == typeof a ? zd[a] || zd[a.toLowerCase()] : void 0
+ }
+
+ function K(a) {
+ var b, c, d = {};
+ for (c in a) h(a, c) && (b = J(c), b && (d[b] = a[c]));
+ return d
+ }
+
+ function L(a, b) {
+ Ad[a] = b
+ }
+
+ function M(a) {
+ var b = [];
+ for (var c in a) b.push({
+ unit: c,
+ priority: Ad[c]
+ });
+ return b.sort(function(a, b) {
+ return a.priority - b.priority
+ }), b
+ }
+
+ function N(b, c) {
+ return function(d) {
+ return null != d ? (P(this, b, d), a.updateOffset(this, c), this) : O(this, b)
+ }
+ }
+
+ function O(a, b) {
+ return a.isValid() ? a._d["get" + (a._isUTC ? "UTC" : "") + b]() : NaN
+ }
+
+ function P(a, b, c) {
+ a.isValid() && a._d["set" + (a._isUTC ? "UTC" : "") + b](c)
+ }
+ // MOMENTS
+ function Q(a) {
+ return a = J(a), y(this[a]) ? this[a]() : this
+ }
+
+ function R(a, b) {
+ if ("object" == typeof a) {
+ a = K(a);
+ for (var c = M(a), d = 0; d < c.length; d++) this[c[d].unit](a[c[d].unit])
+ } else if (a = J(a), y(this[a])) return this[a](b);
+ return this
+ }
+
+ function S(a, b, c) {
+ var d = "" + Math.abs(a),
+ e = b - d.length,
+ f = a >= 0;
+ return (f ? c ? "+" : "" : "-") + Math.pow(10, Math.max(0, e)).toString().substr(1) + d
+ }
+ // token: 'M'
+ // padded: ['MM', 2]
+ // ordinal: 'Mo'
+ // callback: function () { this.month() + 1 }
+ function T(a, b, c, d) {
+ var e = d;
+ "string" == typeof d && (e = function() {
+ return this[d]()
+ }), a && (Ed[a] = e), b && (Ed[b[0]] = function() {
+ return S(e.apply(this, arguments), b[1], b[2])
+ }), c && (Ed[c] = function() {
+ return this.localeData().ordinal(e.apply(this, arguments), a)
+ })
+ }
+
+ function U(a) {
+ return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(/\\/g, "")
+ }
+
+ function V(a) {
+ var b, c, d = a.match(Bd);
+ for (b = 0, c = d.length; c > b; b++) Ed[d[b]] ? d[b] = Ed[d[b]] : d[b] = U(d[b]);
+ return function(b) {
+ var e, f = "";
+ for (e = 0; c > e; e++) f += d[e] instanceof Function ? d[e].call(b, a) : d[e];
+ return f
+ }
+ }
+ // format date using native date object
+ function W(a, b) {
+ return a.isValid() ? (b = X(b, a.localeData()), Dd[b] = Dd[b] || V(b), Dd[b](a)) : a.localeData().invalidDate()
+ }
+
+ function X(a, b) {
+ function c(a) {
+ return b.longDateFormat(a) || a
+ }
+ var d = 5;
+ for (Cd.lastIndex = 0; d >= 0 && Cd.test(a);) a = a.replace(Cd, c), Cd.lastIndex = 0, d -= 1;
+ return a
+ }
+
+ function Y(a, b, c) {
+ Wd[a] = y(b) ? b : function(a, d) {
+ return a && c ? c : b
+ }
+ }
+
+ function Z(a, b) {
+ return h(Wd, a) ? Wd[a](b._strict, b._locale) : new RegExp($(a))
+ }
+ // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
+ function $(a) {
+ return _(a.replace("\\", "").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(a, b, c, d, e) {
+ return b || c || d || e
+ }))
+ }
+
+ function _(a) {
+ return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
+ }
+
+ function aa(a, b) {
+ var c, d = b;
+ for ("string" == typeof a && (a = [a]), "number" == typeof b && (d = function(a, c) {
+ c[b] = t(a)
+ }), c = 0; c < a.length; c++) Xd[a[c]] = d
+ }
+
+ function ba(a, b) {
+ aa(a, function(a, c, d, e) {
+ d._w = d._w || {}, b(a, d._w, d, e)
+ })
+ }
+
+ function ca(a, b, c) {
+ null != b && h(Xd, a) && Xd[a](b, c._a, c, a)
+ }
+
+ function da(a, b) {
+ return new Date(Date.UTC(a, b + 1, 0)).getUTCDate()
+ }
+
+ function ea(a, b) {
+ return c(this._months) ? this._months[a.month()] : this._months[(this._months.isFormat || fe).test(b) ? "format" : "standalone"][a.month()]
+ }
+
+ function fa(a, b) {
+ return c(this._monthsShort) ? this._monthsShort[a.month()] : this._monthsShort[fe.test(b) ? "format" : "standalone"][a.month()]
+ }
+
+ function ga(a, b, c) {
+ var d, e, f, g = a.toLocaleLowerCase();
+ if (!this._monthsParse)
+ for (
+ // this is not used
+ this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = [], d = 0; 12 > d; ++d) f = j([2e3, d]), this._shortMonthsParse[d] = this.monthsShort(f, "").toLocaleLowerCase(), this._longMonthsParse[d] = this.months(f, "").toLocaleLowerCase();
+ return c ? "MMM" === b ? (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : null) : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : null) : "MMM" === b ? (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : null)) : (e = sd.call(this._longMonthsParse, g), -1 !== e ? e : (e = sd.call(this._shortMonthsParse, g), -1 !== e ? e : null))
+ }
+
+ function ha(a, b, c) {
+ var d, e, f;
+ if (this._monthsParseExact) return ga.call(this, a, b, c);
+ // TODO: add sorting
+ // Sorting makes sure if one month (or abbr) is a prefix of another
+ // see sorting in computeMonthsParse
+ for (this._monthsParse || (this._monthsParse = [], this._longMonthsParse = [], this._shortMonthsParse = []), d = 0; 12 > d; d++) {
+ // test the regex
+ if (e = j([2e3, d]), c && !this._longMonthsParse[d] && (this._longMonthsParse[d] = new RegExp("^" + this.months(e, "").replace(".", "") + "$", "i"), this._shortMonthsParse[d] = new RegExp("^" + this.monthsShort(e, "").replace(".", "") + "$", "i")), c || this._monthsParse[d] || (f = "^" + this.months(e, "") + "|^" + this.monthsShort(e, ""), this._monthsParse[d] = new RegExp(f.replace(".", ""), "i")), c && "MMMM" === b && this._longMonthsParse[d].test(a)) return d;
+ if (c && "MMM" === b && this._shortMonthsParse[d].test(a)) return d;
+ if (!c && this._monthsParse[d].test(a)) return d
+ }
+ }
+ // MOMENTS
+ function ia(a, b) {
+ var c;
+ if (!a.isValid())
+ // No op
+ return a;
+ if ("string" == typeof b)
+ if (/^\d+$/.test(b)) b = t(b);
+ else
+ // TODO: Another silent failure?
+ if (b = a.localeData().monthsParse(b), "number" != typeof b) return a;
+ return c = Math.min(a.date(), da(a.year(), b)), a._d["set" + (a._isUTC ? "UTC" : "") + "Month"](b, c), a
+ }
+
+ function ja(b) {
+ return null != b ? (ia(this, b), a.updateOffset(this, !0), this) : O(this, "Month")
+ }
+
+ function ka() {
+ return da(this.year(), this.month())
+ }
+
+ function la(a) {
+ return this._monthsParseExact ? (h(this, "_monthsRegex") || na.call(this), a ? this._monthsShortStrictRegex : this._monthsShortRegex) : (h(this, "_monthsShortRegex") || (this._monthsShortRegex = ie), this._monthsShortStrictRegex && a ? this._monthsShortStrictRegex : this._monthsShortRegex)
+ }
+
+ function ma(a) {
+ return this._monthsParseExact ? (h(this, "_monthsRegex") || na.call(this), a ? this._monthsStrictRegex : this._monthsRegex) : (h(this, "_monthsRegex") || (this._monthsRegex = je), this._monthsStrictRegex && a ? this._monthsStrictRegex : this._monthsRegex)
+ }
+
+ function na() {
+ function a(a, b) {
+ return b.length - a.length
+ }
+ var b, c, d = [],
+ e = [],
+ f = [];
+ for (b = 0; 12 > b; b++) c = j([2e3, b]), d.push(this.monthsShort(c, "")), e.push(this.months(c, "")), f.push(this.months(c, "")), f.push(this.monthsShort(c, ""));
+ for (
+ // Sorting makes sure if one month (or abbr) is a prefix of another it
+ // will match the longer piece.
+ d.sort(a), e.sort(a), f.sort(a), b = 0; 12 > b; b++) d[b] = _(d[b]), e[b] = _(e[b]);
+ for (b = 0; 24 > b; b++) f[b] = _(f[b]);
+ this._monthsRegex = new RegExp("^(" + f.join("|") + ")", "i"), this._monthsShortRegex = this._monthsRegex, this._monthsStrictRegex = new RegExp("^(" + e.join("|") + ")", "i"), this._monthsShortStrictRegex = new RegExp("^(" + d.join("|") + ")", "i")
+ }
+ // HELPERS
+ function oa(a) {
+ return pa(a) ? 366 : 365
+ }
+
+ function pa(a) {
+ return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0
+ }
+
+ function qa() {
+ return pa(this.year())
+ }
+
+ function ra(a, b, c, d, e, f, g) {
+ //can't just apply() to create a date:
+ //http://stackoverflow.com/questions/181348/instantiating-a-javascript-object-by-calling-prototype-constructor-apply
+ var h = new Date(a, b, c, d, e, f, g);
+ //the date constructor remaps years 0-99 to 1900-1999
+ return 100 > a && a >= 0 && isFinite(h.getFullYear()) && h.setFullYear(a), h
+ }
+
+ function sa(a) {
+ var b = new Date(Date.UTC.apply(null, arguments));
+ //the Date.UTC function remaps years 0-99 to 1900-1999
+ return 100 > a && a >= 0 && isFinite(b.getUTCFullYear()) && b.setUTCFullYear(a), b
+ }
+ // start-of-first-week - start-of-year
+ function ta(a, b, c) {
+ var // first-week day -- which january is always in the first week (4 for iso, 1 for other)
+ d = 7 + b - c,
+ // first-week day local weekday -- which local weekday is fwd
+ e = (7 + sa(a, 0, d).getUTCDay() - b) % 7;
+ return -e + d - 1
+ }
+ //http://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
+ function ua(a, b, c, d, e) {
+ var f, g, h = (7 + c - d) % 7,
+ i = ta(a, d, e),
+ j = 1 + 7 * (b - 1) + h + i;
+ return 0 >= j ? (f = a - 1, g = oa(f) + j) : j > oa(a) ? (f = a + 1, g = j - oa(a)) : (f = a, g = j), {
+ year: f,
+ dayOfYear: g
+ }
+ }
+
+ function va(a, b, c) {
+ var d, e, f = ta(a.year(), b, c),
+ g = Math.floor((a.dayOfYear() - f - 1) / 7) + 1;
+ return 1 > g ? (e = a.year() - 1, d = g + wa(e, b, c)) : g > wa(a.year(), b, c) ? (d = g - wa(a.year(), b, c), e = a.year() + 1) : (e = a.year(), d = g), {
+ week: d,
+ year: e
+ }
+ }
+
+ function wa(a, b, c) {
+ var d = ta(a, b, c),
+ e = ta(a + 1, b, c);
+ return (oa(a) - d + e) / 7
+ }
+ // HELPERS
+ // LOCALES
+ function xa(a) {
+ return va(a, this._week.dow, this._week.doy).week
+ }
+
+ function ya() {
+ return this._week.dow
+ }
+
+ function za() {
+ return this._week.doy
+ }
+ // MOMENTS
+ function Aa(a) {
+ var b = this.localeData().week(this);
+ return null == a ? b : this.add(7 * (a - b), "d")
+ }
+
+ function Ba(a) {
+ var b = va(this, 1, 4).week;
+ return null == a ? b : this.add(7 * (a - b), "d")
+ }
+ // HELPERS
+ function Ca(a, b) {
+ return "string" != typeof a ? a : isNaN(a) ? (a = b.weekdaysParse(a), "number" == typeof a ? a : null) : parseInt(a, 10)
+ }
+
+ function Da(a, b) {
+ return "string" == typeof a ? b.weekdaysParse(a) % 7 || 7 : isNaN(a) ? null : a
+ }
+
+ function Ea(a, b) {
+ return c(this._weekdays) ? this._weekdays[a.day()] : this._weekdays[this._weekdays.isFormat.test(b) ? "format" : "standalone"][a.day()]
+ }
+
+ function Fa(a) {
+ return this._weekdaysShort[a.day()]
+ }
+
+ function Ga(a) {
+ return this._weekdaysMin[a.day()]
+ }
+
+ function Ha(a, b, c) {
+ var d, e, f, g = a.toLocaleLowerCase();
+ if (!this._weekdaysParse)
+ for (this._weekdaysParse = [], this._shortWeekdaysParse = [], this._minWeekdaysParse = [], d = 0; 7 > d; ++d) f = j([2e3, 1]).day(d), this._minWeekdaysParse[d] = this.weekdaysMin(f, "").toLocaleLowerCase(), this._shortWeekdaysParse[d] = this.weekdaysShort(f, "").toLocaleLowerCase(), this._weekdaysParse[d] = this.weekdays(f, "").toLocaleLowerCase();
+ return c ? "dddd" === b ? (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : null) : "ddd" === b ? (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : null) : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null) : "dddd" === b ? (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null))) : "ddd" === b ? (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : null))) : (e = sd.call(this._minWeekdaysParse, g), -1 !== e ? e : (e = sd.call(this._weekdaysParse, g), -1 !== e ? e : (e = sd.call(this._shortWeekdaysParse, g), -1 !== e ? e : null)))
+ }
+
+ function Ia(a, b, c) {
+ var d, e, f;
+ if (this._weekdaysParseExact) return Ha.call(this, a, b, c);
+ for (this._weekdaysParse || (this._weekdaysParse = [], this._minWeekdaysParse = [], this._shortWeekdaysParse = [], this._fullWeekdaysParse = []), d = 0; 7 > d; d++) {
+ // test the regex
+ if (e = j([2e3, 1]).day(d), c && !this._fullWeekdaysParse[d] && (this._fullWeekdaysParse[d] = new RegExp("^" + this.weekdays(e, "").replace(".", ".?") + "$", "i"), this._shortWeekdaysParse[d] = new RegExp("^" + this.weekdaysShort(e, "").replace(".", ".?") + "$", "i"), this._minWeekdaysParse[d] = new RegExp("^" + this.weekdaysMin(e, "").replace(".", ".?") + "$", "i")), this._weekdaysParse[d] || (f = "^" + this.weekdays(e, "") + "|^" + this.weekdaysShort(e, "") + "|^" + this.weekdaysMin(e, ""), this._weekdaysParse[d] = new RegExp(f.replace(".", ""), "i")), c && "dddd" === b && this._fullWeekdaysParse[d].test(a)) return d;
+ if (c && "ddd" === b && this._shortWeekdaysParse[d].test(a)) return d;
+ if (c && "dd" === b && this._minWeekdaysParse[d].test(a)) return d;
+ if (!c && this._weekdaysParse[d].test(a)) return d
+ }
+ }
+ // MOMENTS
+ function Ja(a) {
+ if (!this.isValid()) return null != a ? this : NaN;
+ var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
+ return null != a ? (a = Ca(a, this.localeData()), this.add(a - b, "d")) : b
+ }
+
+ function Ka(a) {
+ if (!this.isValid()) return null != a ? this : NaN;
+ var b = (this.day() + 7 - this.localeData()._week.dow) % 7;
+ return null == a ? b : this.add(a - b, "d")
+ }
+
+ function La(a) {
+ if (!this.isValid()) return null != a ? this : NaN;
+ // behaves the same as moment#day except
+ // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)
+ // as a setter, sunday should belong to the previous week.
+ if (null != a) {
+ var b = Da(a, this.localeData());
+ return this.day(this.day() % 7 ? b : b - 7)
+ }
+ return this.day() || 7
+ }
+
+ function Ma(a) {
+ return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysStrictRegex : this._weekdaysRegex) : (h(this, "_weekdaysRegex") || (this._weekdaysRegex = pe), this._weekdaysStrictRegex && a ? this._weekdaysStrictRegex : this._weekdaysRegex)
+ }
+
+ function Na(a) {
+ return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex) : (h(this, "_weekdaysShortRegex") || (this._weekdaysShortRegex = qe), this._weekdaysShortStrictRegex && a ? this._weekdaysShortStrictRegex : this._weekdaysShortRegex)
+ }
+
+ function Oa(a) {
+ return this._weekdaysParseExact ? (h(this, "_weekdaysRegex") || Pa.call(this), a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex) : (h(this, "_weekdaysMinRegex") || (this._weekdaysMinRegex = re), this._weekdaysMinStrictRegex && a ? this._weekdaysMinStrictRegex : this._weekdaysMinRegex)
+ }
+
+ function Pa() {
+ function a(a, b) {
+ return b.length - a.length
+ }
+ var b, c, d, e, f, g = [],
+ h = [],
+ i = [],
+ k = [];
+ for (b = 0; 7 > b; b++) c = j([2e3, 1]).day(b), d = this.weekdaysMin(c, ""), e = this.weekdaysShort(c, ""), f = this.weekdays(c, ""), g.push(d), h.push(e), i.push(f), k.push(d), k.push(e), k.push(f);
+ for (
+ // Sorting makes sure if one weekday (or abbr) is a prefix of another it
+ // will match the longer piece.
+ g.sort(a), h.sort(a), i.sort(a), k.sort(a), b = 0; 7 > b; b++) h[b] = _(h[b]), i[b] = _(i[b]), k[b] = _(k[b]);
+ this._weekdaysRegex = new RegExp("^(" + k.join("|") + ")", "i"), this._weekdaysShortRegex = this._weekdaysRegex, this._weekdaysMinRegex = this._weekdaysRegex, this._weekdaysStrictRegex = new RegExp("^(" + i.join("|") + ")", "i"), this._weekdaysShortStrictRegex = new RegExp("^(" + h.join("|") + ")", "i"), this._weekdaysMinStrictRegex = new RegExp("^(" + g.join("|") + ")", "i")
+ }
+ // FORMATTING
+ function Qa() {
+ return this.hours() % 12 || 12
+ }
+
+ function Ra() {
+ return this.hours() || 24
+ }
+
+ function Sa(a, b) {
+ T(a, 0, 0, function() {
+ return this.localeData().meridiem(this.hours(), this.minutes(), b)
+ })
+ }
+ // PARSING
+ function Ta(a, b) {
+ return b._meridiemParse
+ }
+ // LOCALES
+ function Ua(a) {
+ // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays
+ // Using charAt should be more compatible.
+ return "p" === (a + "").toLowerCase().charAt(0)
+ }
+
+ function Va(a, b, c) {
+ return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM"
+ }
+
+ function Wa(a) {
+ return a ? a.toLowerCase().replace("_", "-") : a
+ }
+ // pick the locale from the array
+ // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each
+ // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root
+ function Xa(a) {
+ for (var b, c, d, e, f = 0; f < a.length;) {
+ for (e = Wa(a[f]).split("-"), b = e.length, c = Wa(a[f + 1]), c = c ? c.split("-") : null; b > 0;) {
+ if (d = Ya(e.slice(0, b).join("-"))) return d;
+ if (c && c.length >= b && u(e, c, !0) >= b - 1)
+ //the next array item is better than a shallower substring of this one
+ break;
+ b--
+ }
+ f++
+ }
+ return null
+ }
+
+ function Ya(a) {
+ var b = null;
+ // TODO: Find a better way to register and load all the locales in Node
+ if (!we[a] && "undefined" != typeof module && module && module.exports) try {
+ b = se._abbr, require("./locale/" + a),
+ // because defineLocale currently also sets the global locale, we
+ // want to undo that for lazy loaded locales
+ Za(b)
+ } catch (c) {}
+ return we[a]
+ }
+ // This function will load locale and then set the global locale. If
+ // no arguments are passed in, it will simply return the current global
+ // locale key.
+ function Za(a, b) {
+ var c;
+ // moment.duration._locale = moment._locale = data;
+ return a && (c = o(b) ? ab(a) : $a(a, b), c && (se = c)), se._abbr
+ }
+
+ function $a(a, b) {
+ if (null !== b) {
+ var c = ve;
+ // treat as if there is no base config
+ // backwards compat for now: also set the locale
+ return b.abbr = a, null != we[a] ? (x("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."), c = we[a]._config) : null != b.parentLocale && (null != we[b.parentLocale] ? c = we[b.parentLocale]._config : x("parentLocaleUndefined", "specified parentLocale is not defined yet. See http://momentjs.com/guides/#/warnings/parent-locale/")), we[a] = new B(A(c, b)), Za(a), we[a]
+ }
+ // useful for testing
+ return delete we[a], null
+ }
+
+ function _a(a, b) {
+ if (null != b) {
+ var c, d = ve;
+ // MERGE
+ null != we[a] && (d = we[a]._config), b = A(d, b), c = new B(b), c.parentLocale = we[a], we[a] = c,
+ // backwards compat for now: also set the locale
+ Za(a)
+ } else
+ // pass null for config to unupdate, useful for tests
+ null != we[a] && (null != we[a].parentLocale ? we[a] = we[a].parentLocale : null != we[a] && delete we[a]);
+ return we[a]
+ }
+ // returns locale data
+ function ab(a) {
+ var b;
+ if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a) return se;
+ if (!c(a)) {
+ if (b = Ya(a)) return b;
+ a = [a]
+ }
+ return Xa(a)
+ }
+
+ function bb() {
+ return rd(we)
+ }
+
+ function cb(a) {
+ var b, c = a._a;
+ return c && -2 === l(a).overflow && (b = c[Zd] < 0 || c[Zd] > 11 ? Zd : c[$d] < 1 || c[$d] > da(c[Yd], c[Zd]) ? $d : c[_d] < 0 || c[_d] > 24 || 24 === c[_d] && (0 !== c[ae] || 0 !== c[be] || 0 !== c[ce]) ? _d : c[ae] < 0 || c[ae] > 59 ? ae : c[be] < 0 || c[be] > 59 ? be : c[ce] < 0 || c[ce] > 999 ? ce : -1, l(a)._overflowDayOfYear && (Yd > b || b > $d) && (b = $d), l(a)._overflowWeeks && -1 === b && (b = de), l(a)._overflowWeekday && -1 === b && (b = ee), l(a).overflow = b), a
+ }
+ // date from iso format
+ function db(a) {
+ var b, c, d, e, f, g, h = a._i,
+ i = xe.exec(h) || ye.exec(h);
+ if (i) {
+ for (l(a).iso = !0, b = 0, c = Ae.length; c > b; b++)
+ if (Ae[b][1].exec(i[1])) {
+ e = Ae[b][0], d = Ae[b][2] !== !1;
+ break
+ }
+ if (null == e) return void(a._isValid = !1);
+ if (i[3]) {
+ for (b = 0, c = Be.length; c > b; b++)
+ if (Be[b][1].exec(i[3])) {
+ // match[2] should be 'T' or space
+ f = (i[2] || " ") + Be[b][0];
+ break
+ }
+ if (null == f) return void(a._isValid = !1)
+ }
+ if (!d && null != f) return void(a._isValid = !1);
+ if (i[4]) {
+ if (!ze.exec(i[4])) return void(a._isValid = !1);
+ g = "Z"
+ }
+ a._f = e + (f || "") + (g || ""), jb(a)
+ } else a._isValid = !1
+ }
+ // date from iso format or fallback
+ function eb(b) {
+ var c = Ce.exec(b._i);
+ return null !== c ? void(b._d = new Date(+c[1])) : (db(b), void(b._isValid === !1 && (delete b._isValid, a.createFromInputFallback(b))))
+ }
+ // Pick the first defined of two or three arguments.
+ function fb(a, b, c) {
+ return null != a ? a : null != b ? b : c
+ }
+
+ function gb(b) {
+ // hooks is actually the exported moment object
+ var c = new Date(a.now());
+ return b._useUTC ? [c.getUTCFullYear(), c.getUTCMonth(), c.getUTCDate()] : [c.getFullYear(), c.getMonth(), c.getDate()]
+ }
+ // convert an array to a date.
+ // the array should mirror the parameters below
+ // note: all values past the year are optional and will default to the lowest possible value.
+ // [year, month, day , hour, minute, second, millisecond]
+ function hb(a) {
+ var b, c, d, e, f = [];
+ if (!a._d) {
+ // Default to current date.
+ // * if no year, month, day of month are given, default to today
+ // * if day of month is given, default month and year
+ // * if month is given, default only year
+ // * if year is given, don't default anything
+ for (d = gb(a), a._w && null == a._a[$d] && null == a._a[Zd] && ib(a), a._dayOfYear && (e = fb(a._a[Yd], d[Yd]), a._dayOfYear > oa(e) && (l(a)._overflowDayOfYear = !0), c = sa(e, 0, a._dayOfYear), a._a[Zd] = c.getUTCMonth(), a._a[$d] = c.getUTCDate()), b = 0; 3 > b && null == a._a[b]; ++b) a._a[b] = f[b] = d[b];
+ // Zero out whatever was not defaulted, including time
+ for (; 7 > b; b++) a._a[b] = f[b] = null == a._a[b] ? 2 === b ? 1 : 0 : a._a[b];
+ // Check for 24:00:00.000
+ 24 === a._a[_d] && 0 === a._a[ae] && 0 === a._a[be] && 0 === a._a[ce] && (a._nextDay = !0, a._a[_d] = 0), a._d = (a._useUTC ? sa : ra).apply(null, f),
+ // Apply timezone offset from input. The actual utcOffset can be changed
+ // with parseZone.
+ null != a._tzm && a._d.setUTCMinutes(a._d.getUTCMinutes() - a._tzm), a._nextDay && (a._a[_d] = 24)
+ }
+ }
+
+ function ib(a) {
+ var b, c, d, e, f, g, h, i;
+ b = a._w, null != b.GG || null != b.W || null != b.E ? (f = 1, g = 4, c = fb(b.GG, a._a[Yd], va(rb(), 1, 4).year), d = fb(b.W, 1), e = fb(b.E, 1), (1 > e || e > 7) && (i = !0)) : (f = a._locale._week.dow, g = a._locale._week.doy, c = fb(b.gg, a._a[Yd], va(rb(), f, g).year), d = fb(b.w, 1), null != b.d ? (e = b.d, (0 > e || e > 6) && (i = !0)) : null != b.e ? (e = b.e + f, (b.e < 0 || b.e > 6) && (i = !0)) : e = f), 1 > d || d > wa(c, f, g) ? l(a)._overflowWeeks = !0 : null != i ? l(a)._overflowWeekday = !0 : (h = ua(c, d, e, f, g), a._a[Yd] = h.year, a._dayOfYear = h.dayOfYear)
+ }
+ // date from string and format string
+ function jb(b) {
+ // TODO: Move this to another part of the creation flow to prevent circular deps
+ if (b._f === a.ISO_8601) return void db(b);
+ b._a = [], l(b).empty = !0;
+ // This array is used to make a Date, either with `new Date` or `Date.UTC`
+ var c, d, e, f, g, h = "" + b._i,
+ i = h.length,
+ j = 0;
+ for (e = X(b._f, b._locale).match(Bd) || [], c = 0; c < e.length; c++) f = e[c], d = (h.match(Z(f, b)) || [])[0], d && (g = h.substr(0, h.indexOf(d)), g.length > 0 && l(b).unusedInput.push(g), h = h.slice(h.indexOf(d) + d.length), j += d.length), Ed[f] ? (d ? l(b).empty = !1 : l(b).unusedTokens.push(f), ca(f, d, b)) : b._strict && !d && l(b).unusedTokens.push(f);
+ // add remaining unparsed input length to the string
+ l(b).charsLeftOver = i - j, h.length > 0 && l(b).unusedInput.push(h),
+ // clear _12h flag if hour is <= 12
+ b._a[_d] <= 12 && l(b).bigHour === !0 && b._a[_d] > 0 && (l(b).bigHour = void 0), l(b).parsedDateParts = b._a.slice(0), l(b).meridiem = b._meridiem,
+ // handle meridiem
+ b._a[_d] = kb(b._locale, b._a[_d], b._meridiem), hb(b), cb(b)
+ }
+
+ function kb(a, b, c) {
+ var d;
+ // Fallback
+ return null == c ? b : null != a.meridiemHour ? a.meridiemHour(b, c) : null != a.isPM ? (d = a.isPM(c), d && 12 > b && (b += 12), d || 12 !== b || (b = 0), b) : b
+ }
+ // date from string and array of format strings
+ function lb(a) {
+ var b, c, d, e, f;
+ if (0 === a._f.length) return l(a).invalidFormat = !0, void(a._d = new Date(NaN));
+ for (e = 0; e < a._f.length; e++) f = 0, b = p({}, a), null != a._useUTC && (b._useUTC = a._useUTC), b._f = a._f[e], jb(b), m(b) && (f += l(b).charsLeftOver, f += 10 * l(b).unusedTokens.length, l(b).score = f, (null == d || d > f) && (d = f, c = b));
+ i(a, c || b)
+ }
+
+ function mb(a) {
+ if (!a._d) {
+ var b = K(a._i);
+ a._a = g([b.year, b.month, b.day || b.date, b.hour, b.minute, b.second, b.millisecond], function(a) {
+ return a && parseInt(a, 10)
+ }), hb(a)
+ }
+ }
+
+ function nb(a) {
+ var b = new q(cb(ob(a)));
+ // Adding is smart enough around DST
+ return b._nextDay && (b.add(1, "d"), b._nextDay = void 0), b
+ }
+
+ function ob(a) {
+ var b = a._i,
+ d = a._f;
+ return a._locale = a._locale || ab(a._l), null === b || void 0 === d && "" === b ? n({
+ nullInput: !0
+ }) : ("string" == typeof b && (a._i = b = a._locale.preparse(b)), r(b) ? new q(cb(b)) : (c(d) ? lb(a) : f(b) ? a._d = b : d ? jb(a) : pb(a), m(a) || (a._d = null), a))
+ }
+
+ function pb(b) {
+ var d = b._i;
+ void 0 === d ? b._d = new Date(a.now()) : f(d) ? b._d = new Date(d.valueOf()) : "string" == typeof d ? eb(b) : c(d) ? (b._a = g(d.slice(0), function(a) {
+ return parseInt(a, 10)
+ }), hb(b)) : "object" == typeof d ? mb(b) : "number" == typeof d ?
+ // from milliseconds
+ b._d = new Date(d) : a.createFromInputFallback(b)
+ }
+
+ function qb(a, b, f, g, h) {
+ var i = {};
+ // object construction must be done this way.
+ // https://github.com/moment/moment/issues/1423
+ return "boolean" == typeof f && (g = f, f = void 0), (d(a) && e(a) || c(a) && 0 === a.length) && (a = void 0), i._isAMomentObject = !0, i._useUTC = i._isUTC = h, i._l = f, i._i = a, i._f = b, i._strict = g, nb(i)
+ }
+
+ function rb(a, b, c, d) {
+ return qb(a, b, c, d, !1)
+ }
+ // Pick a moment m from moments so that m[fn](other) is true for all
+ // other. This relies on the function fn to be transitive.
+ //
+ // moments should either be an array of moment objects or an array, whose
+ // first element is an array of moment objects.
+ function sb(a, b) {
+ var d, e;
+ if (1 === b.length && c(b[0]) && (b = b[0]), !b.length) return rb();
+ for (d = b[0], e = 1; e < b.length; ++e) b[e].isValid() && !b[e][a](d) || (d = b[e]);
+ return d
+ }
+ // TODO: Use [].sort instead?
+ function tb() {
+ var a = [].slice.call(arguments, 0);
+ return sb("isBefore", a)
+ }
+
+ function ub() {
+ var a = [].slice.call(arguments, 0);
+ return sb("isAfter", a)
+ }
+
+ function vb(a) {
+ var b = K(a),
+ c = b.year || 0,
+ d = b.quarter || 0,
+ e = b.month || 0,
+ f = b.week || 0,
+ g = b.day || 0,
+ h = b.hour || 0,
+ i = b.minute || 0,
+ j = b.second || 0,
+ k = b.millisecond || 0;
+ // representation for dateAddRemove
+ this._milliseconds = +k + 1e3 * j + // 1000
+ 6e4 * i + // 1000 * 60
+ 1e3 * h * 60 * 60, //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978
+ // Because of dateAddRemove treats 24 hours as different from a
+ // day when working around DST, we need to store them separately
+ this._days = +g + 7 * f,
+ // It is impossible translate months into days without knowing
+ // which months you are are talking about, so we have to store
+ // it separately.
+ this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = ab(), this._bubble()
+ }
+
+ function wb(a) {
+ return a instanceof vb
+ }
+ // FORMATTING
+ function xb(a, b) {
+ T(a, 0, 0, function() {
+ var a = this.utcOffset(),
+ c = "+";
+ return 0 > a && (a = -a, c = "-"), c + S(~~(a / 60), 2) + b + S(~~a % 60, 2)
+ })
+ }
+
+ function yb(a, b) {
+ var c = (b || "").match(a) || [],
+ d = c[c.length - 1] || [],
+ e = (d + "").match(Ge) || ["-", 0, 0],
+ f = +(60 * e[1]) + t(e[2]);
+ return "+" === e[0] ? f : -f
+ }
+ // Return a moment from input, that is local/utc/zone equivalent to model.
+ function zb(b, c) {
+ var d, e;
+ // Use low-level api, because this fn is low-level api.
+ return c._isUTC ? (d = c.clone(), e = (r(b) || f(b) ? b.valueOf() : rb(b).valueOf()) - d.valueOf(), d._d.setTime(d._d.valueOf() + e), a.updateOffset(d, !1), d) : rb(b).local()
+ }
+
+ function Ab(a) {
+ // On Firefox.24 Date#getTimezoneOffset returns a floating point.
+ // https://github.com/moment/moment/pull/1871
+ return 15 * -Math.round(a._d.getTimezoneOffset() / 15)
+ }
+ // MOMENTS
+ // keepLocalTime = true means only change the timezone, without
+ // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->
+ // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset
+ // +0200, so we adjust the time as needed, to be valid.
+ //
+ // Keeping the time actually adds/subtracts (one hour)
+ // from the actual represented time. That is why we call updateOffset
+ // a second time. In case it wants us to change the offset again
+ // _changeInProgress == true case, then we have to adjust, because
+ // there is no such time in the given timezone.
+ function Bb(b, c) {
+ var d, e = this._offset || 0;
+ return this.isValid() ? null != b ? ("string" == typeof b ? b = yb(Td, b) : Math.abs(b) < 16 && (b = 60 * b), !this._isUTC && c && (d = Ab(this)), this._offset = b, this._isUTC = !0, null != d && this.add(d, "m"), e !== b && (!c || this._changeInProgress ? Sb(this, Mb(b - e, "m"), 1, !1) : this._changeInProgress || (this._changeInProgress = !0, a.updateOffset(this, !0), this._changeInProgress = null)), this) : this._isUTC ? e : Ab(this) : null != b ? this : NaN
+ }
+
+ function Cb(a, b) {
+ return null != a ? ("string" != typeof a && (a = -a), this.utcOffset(a, b), this) : -this.utcOffset()
+ }
+
+ function Db(a) {
+ return this.utcOffset(0, a)
+ }
+
+ function Eb(a) {
+ return this._isUTC && (this.utcOffset(0, a), this._isUTC = !1, a && this.subtract(Ab(this), "m")), this
+ }
+
+ function Fb() {
+ return this._tzm ? this.utcOffset(this._tzm) : "string" == typeof this._i && this.utcOffset(yb(Sd, this._i)), this
+ }
+
+ function Gb(a) {
+ return this.isValid() ? (a = a ? rb(a).utcOffset() : 0, (this.utcOffset() - a) % 60 === 0) : !1
+ }
+
+ function Hb() {
+ return this.utcOffset() > this.clone().month(0).utcOffset() || this.utcOffset() > this.clone().month(5).utcOffset()
+ }
+
+ function Ib() {
+ if (!o(this._isDSTShifted)) return this._isDSTShifted;
+ var a = {};
+ if (p(a, this), a = ob(a), a._a) {
+ var b = a._isUTC ? j(a._a) : rb(a._a);
+ this._isDSTShifted = this.isValid() && u(a._a, b.toArray()) > 0
+ } else this._isDSTShifted = !1;
+ return this._isDSTShifted
+ }
+
+ function Jb() {
+ return this.isValid() ? !this._isUTC : !1
+ }
+
+ function Kb() {
+ return this.isValid() ? this._isUTC : !1
+ }
+
+ function Lb() {
+ return this.isValid() ? this._isUTC && 0 === this._offset : !1
+ }
+
+ function Mb(a, b) {
+ var c, d, e, f = a,
+ // matching against regexp is expensive, do it on demand
+ g = null; // checks for null or undefined
+ return wb(a) ? f = {
+ ms: a._milliseconds,
+ d: a._days,
+ M: a._months
+ } : "number" == typeof a ? (f = {}, b ? f[b] = a : f.milliseconds = a) : (g = He.exec(a)) ? (c = "-" === g[1] ? -1 : 1, f = {
+ y: 0,
+ d: t(g[$d]) * c,
+ h: t(g[_d]) * c,
+ m: t(g[ae]) * c,
+ s: t(g[be]) * c,
+ ms: t(g[ce]) * c
+ }) : (g = Ie.exec(a)) ? (c = "-" === g[1] ? -1 : 1, f = {
+ y: Nb(g[2], c),
+ M: Nb(g[3], c),
+ w: Nb(g[4], c),
+ d: Nb(g[5], c),
+ h: Nb(g[6], c),
+ m: Nb(g[7], c),
+ s: Nb(g[8], c)
+ }) : null == f ? f = {} : "object" == typeof f && ("from" in f || "to" in f) && (e = Pb(rb(f.from), rb(f.to)), f = {}, f.ms = e.milliseconds, f.M = e.months), d = new vb(f), wb(a) && h(a, "_locale") && (d._locale = a._locale), d
+ }
+
+ function Nb(a, b) {
+ // We'd normally use ~~inp for this, but unfortunately it also
+ // converts floats to ints.
+ // inp may be undefined, so careful calling replace on it.
+ var c = a && parseFloat(a.replace(",", "."));
+ // apply sign while we're at it
+ return (isNaN(c) ? 0 : c) * b
+ }
+
+ function Ob(a, b) {
+ var c = {
+ milliseconds: 0,
+ months: 0
+ };
+ return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a.clone().add(c.months, "M").isAfter(b) && --c.months, c.milliseconds = +b - +a.clone().add(c.months, "M"), c
+ }
+
+ function Pb(a, b) {
+ var c;
+ return a.isValid() && b.isValid() ? (b = zb(b, a), a.isBefore(b) ? c = Ob(a, b) : (c = Ob(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c) : {
+ milliseconds: 0,
+ months: 0
+ }
+ }
+
+ function Qb(a) {
+ return 0 > a ? -1 * Math.round(-1 * a) : Math.round(a)
+ }
+ // TODO: remove 'name' arg after deprecation is removed
+ function Rb(a, b) {
+ return function(c, d) {
+ var e, f;
+ //invert the arguments, but complain about it
+ return null === d || isNaN(+d) || (x(b, "moment()." + b + "(period, number) is deprecated. Please use moment()." + b + "(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."), f = c, c = d, d = f), c = "string" == typeof c ? +c : c, e = Mb(c, d), Sb(this, e, a), this
+ }
+ }
+
+ function Sb(b, c, d, e) {
+ var f = c._milliseconds,
+ g = Qb(c._days),
+ h = Qb(c._months);
+ b.isValid() && (e = null == e ? !0 : e, f && b._d.setTime(b._d.valueOf() + f * d), g && P(b, "Date", O(b, "Date") + g * d), h && ia(b, O(b, "Month") + h * d), e && a.updateOffset(b, g || h))
+ }
+
+ function Tb(a, b) {
+ var c = a.diff(b, "days", !0);
+ return -6 > c ? "sameElse" : -1 > c ? "lastWeek" : 0 > c ? "lastDay" : 1 > c ? "sameDay" : 2 > c ? "nextDay" : 7 > c ? "nextWeek" : "sameElse"
+ }
+
+ function Ub(b, c) {
+ // We want to compare the start of today, vs this.
+ // Getting start-of-today depends on whether we're local/utc/offset or not.
+ var d = b || rb(),
+ e = zb(d, this).startOf("day"),
+ f = a.calendarFormat(this, e) || "sameElse",
+ g = c && (y(c[f]) ? c[f].call(this, d) : c[f]);
+ return this.format(g || this.localeData().calendar(f, this, rb(d)))
+ }
+
+ function Vb() {
+ return new q(this)
+ }
+
+ function Wb(a, b) {
+ var c = r(a) ? a : rb(a);
+ return this.isValid() && c.isValid() ? (b = J(o(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() > c.valueOf() : c.valueOf() < this.clone().startOf(b).valueOf()) : !1
+ }
+
+ function Xb(a, b) {
+ var c = r(a) ? a : rb(a);
+ return this.isValid() && c.isValid() ? (b = J(o(b) ? "millisecond" : b), "millisecond" === b ? this.valueOf() < c.valueOf() : this.clone().endOf(b).valueOf() < c.valueOf()) : !1
+ }
+
+ function Yb(a, b, c, d) {
+ return d = d || "()", ("(" === d[0] ? this.isAfter(a, c) : !this.isBefore(a, c)) && (")" === d[1] ? this.isBefore(b, c) : !this.isAfter(b, c))
+ }
+
+ function Zb(a, b) {
+ var c, d = r(a) ? a : rb(a);
+ return this.isValid() && d.isValid() ? (b = J(b || "millisecond"), "millisecond" === b ? this.valueOf() === d.valueOf() : (c = d.valueOf(), this.clone().startOf(b).valueOf() <= c && c <= this.clone().endOf(b).valueOf())) : !1
+ }
+
+ function $b(a, b) {
+ return this.isSame(a, b) || this.isAfter(a, b)
+ }
+
+ function _b(a, b) {
+ return this.isSame(a, b) || this.isBefore(a, b)
+ }
+
+ function ac(a, b, c) {
+ var d, e, f, g; // 1000
+ // 1000 * 60
+ // 1000 * 60 * 60
+ // 1000 * 60 * 60 * 24, negate dst
+ // 1000 * 60 * 60 * 24 * 7, negate dst
+ return this.isValid() ? (d = zb(a, this), d.isValid() ? (e = 6e4 * (d.utcOffset() - this.utcOffset()), b = J(b), "year" === b || "month" === b || "quarter" === b ? (g = bc(this, d), "quarter" === b ? g /= 3 : "year" === b && (g /= 12)) : (f = this - d, g = "second" === b ? f / 1e3 : "minute" === b ? f / 6e4 : "hour" === b ? f / 36e5 : "day" === b ? (f - e) / 864e5 : "week" === b ? (f - e) / 6048e5 : f), c ? g : s(g)) : NaN) : NaN
+ }
+
+ function bc(a, b) {
+ // difference in months
+ var c, d, e = 12 * (b.year() - a.year()) + (b.month() - a.month()),
+ // b is in (anchor - 1 month, anchor + 1 month)
+ f = a.clone().add(e, "months");
+ //check for negative zero, return zero if negative zero
+ // linear across the month
+ // linear across the month
+ return 0 > b - f ? (c = a.clone().add(e - 1, "months"), d = (b - f) / (f - c)) : (c = a.clone().add(e + 1, "months"), d = (b - f) / (c - f)), -(e + d) || 0
+ }
+
+ function cc() {
+ return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
+ }
+
+ function dc() {
+ var a = this.clone().utc();
+ return 0 < a.year() && a.year() <= 9999 ? y(Date.prototype.toISOString) ? this.toDate().toISOString() : W(a, "YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : W(a, "YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
+ }
+
+ function ec(b) {
+ b || (b = this.isUtc() ? a.defaultFormatUtc : a.defaultFormat);
+ var c = W(this, b);
+ return this.localeData().postformat(c)
+ }
+
+ function fc(a, b) {
+ return this.isValid() && (r(a) && a.isValid() || rb(a).isValid()) ? Mb({
+ to: this,
+ from: a
+ }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate()
+ }
+
+ function gc(a) {
+ return this.from(rb(), a)
+ }
+
+ function hc(a, b) {
+ return this.isValid() && (r(a) && a.isValid() || rb(a).isValid()) ? Mb({
+ from: this,
+ to: a
+ }).locale(this.locale()).humanize(!b) : this.localeData().invalidDate()
+ }
+
+ function ic(a) {
+ return this.to(rb(), a)
+ }
+ // If passed a locale key, it will set the locale for this
+ // instance. Otherwise, it will return the locale configuration
+ // variables for this instance.
+ function jc(a) {
+ var b;
+ return void 0 === a ? this._locale._abbr : (b = ab(a), null != b && (this._locale = b), this)
+ }
+
+ function kc() {
+ return this._locale
+ }
+
+ function lc(a) {
+ // the following switch intentionally omits break keywords
+ // to utilize falling through the cases.
+ switch (a = J(a)) {
+ case "year":
+ this.month(0); /* falls through */
+ case "quarter":
+ case "month":
+ this.date(1); /* falls through */
+ case "week":
+ case "isoWeek":
+ case "day":
+ case "date":
+ this.hours(0); /* falls through */
+ case "hour":
+ this.minutes(0); /* falls through */
+ case "minute":
+ this.seconds(0); /* falls through */
+ case "second":
+ this.milliseconds(0)
+ }
+ // weeks are a special case
+ // quarters are also special
+ return "week" === a && this.weekday(0), "isoWeek" === a && this.isoWeekday(1), "quarter" === a && this.month(3 * Math.floor(this.month() / 3)), this
+ }
+
+ function mc(a) {
+ // 'date' is an alias for 'day', so it should be considered as such.
+ return a = J(a), void 0 === a || "millisecond" === a ? this : ("date" === a && (a = "day"), this.startOf(a).add(1, "isoWeek" === a ? "week" : a).subtract(1, "ms"))
+ }
+
+ function nc() {
+ return this._d.valueOf() - 6e4 * (this._offset || 0)
+ }
+
+ function oc() {
+ return Math.floor(this.valueOf() / 1e3)
+ }
+
+ function pc() {
+ return new Date(this.valueOf())
+ }
+
+ function qc() {
+ var a = this;
+ return [a.year(), a.month(), a.date(), a.hour(), a.minute(), a.second(), a.millisecond()]
+ }
+
+ function rc() {
+ var a = this;
+ return {
+ years: a.year(),
+ months: a.month(),
+ date: a.date(),
+ hours: a.hours(),
+ minutes: a.minutes(),
+ seconds: a.seconds(),
+ milliseconds: a.milliseconds()
+ }
+ }
+
+ function sc() {
+ // new Date(NaN).toJSON() === null
+ return this.isValid() ? this.toISOString() : null
+ }
+
+ function tc() {
+ return m(this)
+ }
+
+ function uc() {
+ return i({}, l(this))
+ }
+
+ function vc() {
+ return l(this).overflow
+ }
+
+ function wc() {
+ return {
+ input: this._i,
+ format: this._f,
+ locale: this._locale,
+ isUTC: this._isUTC,
+ strict: this._strict
+ }
+ }
+
+ function xc(a, b) {
+ T(0, [a, a.length], 0, b)
+ }
+ // MOMENTS
+ function yc(a) {
+ return Cc.call(this, a, this.week(), this.weekday(), this.localeData()._week.dow, this.localeData()._week.doy)
+ }
+
+ function zc(a) {
+ return Cc.call(this, a, this.isoWeek(), this.isoWeekday(), 1, 4)
+ }
+
+ function Ac() {
+ return wa(this.year(), 1, 4)
+ }
+
+ function Bc() {
+ var a = this.localeData()._week;
+ return wa(this.year(), a.dow, a.doy)
+ }
+
+ function Cc(a, b, c, d, e) {
+ var f;
+ return null == a ? va(this, d, e).year : (f = wa(a, d, e), b > f && (b = f), Dc.call(this, a, b, c, d, e))
+ }
+
+ function Dc(a, b, c, d, e) {
+ var f = ua(a, b, c, d, e),
+ g = sa(f.year, 0, f.dayOfYear);
+ return this.year(g.getUTCFullYear()), this.month(g.getUTCMonth()), this.date(g.getUTCDate()), this
+ }
+ // MOMENTS
+ function Ec(a) {
+ return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3 * (a - 1) + this.month() % 3)
+ }
+ // HELPERS
+ // MOMENTS
+ function Fc(a) {
+ var b = Math.round((this.clone().startOf("day") - this.clone().startOf("year")) / 864e5) + 1;
+ return null == a ? b : this.add(a - b, "d")
+ }
+
+ function Gc(a, b) {
+ b[ce] = t(1e3 * ("0." + a))
+ }
+ // MOMENTS
+ function Hc() {
+ return this._isUTC ? "UTC" : ""
+ }
+
+ function Ic() {
+ return this._isUTC ? "Coordinated Universal Time" : ""
+ }
+
+ function Jc(a) {
+ return rb(1e3 * a)
+ }
+
+ function Kc() {
+ return rb.apply(null, arguments).parseZone()
+ }
+
+ function Lc(a) {
+ return a
+ }
+
+ function Mc(a, b, c, d) {
+ var e = ab(),
+ f = j().set(d, b);
+ return e[c](f, a)
+ }
+
+ function Nc(a, b, c) {
+ if ("number" == typeof a && (b = a, a = void 0), a = a || "", null != b) return Mc(a, b, c, "month");
+ var d, e = [];
+ for (d = 0; 12 > d; d++) e[d] = Mc(a, d, c, "month");
+ return e
+ }
+ // ()
+ // (5)
+ // (fmt, 5)
+ // (fmt)
+ // (true)
+ // (true, 5)
+ // (true, fmt, 5)
+ // (true, fmt)
+ function Oc(a, b, c, d) {
+ "boolean" == typeof a ? ("number" == typeof b && (c = b, b = void 0), b = b || "") : (b = a, c = b, a = !1, "number" == typeof b && (c = b, b = void 0), b = b || "");
+ var e = ab(),
+ f = a ? e._week.dow : 0;
+ if (null != c) return Mc(b, (c + f) % 7, d, "day");
+ var g, h = [];
+ for (g = 0; 7 > g; g++) h[g] = Mc(b, (g + f) % 7, d, "day");
+ return h
+ }
+
+ function Pc(a, b) {
+ return Nc(a, b, "months")
+ }
+
+ function Qc(a, b) {
+ return Nc(a, b, "monthsShort")
+ }
+
+ function Rc(a, b, c) {
+ return Oc(a, b, c, "weekdays")
+ }
+
+ function Sc(a, b, c) {
+ return Oc(a, b, c, "weekdaysShort")
+ }
+
+ function Tc(a, b, c) {
+ return Oc(a, b, c, "weekdaysMin")
+ }
+
+ function Uc() {
+ var a = this._data;
+ return this._milliseconds = Ue(this._milliseconds), this._days = Ue(this._days), this._months = Ue(this._months), a.milliseconds = Ue(a.milliseconds), a.seconds = Ue(a.seconds), a.minutes = Ue(a.minutes), a.hours = Ue(a.hours), a.months = Ue(a.months), a.years = Ue(a.years), this
+ }
+
+ function Vc(a, b, c, d) {
+ var e = Mb(b, c);
+ return a._milliseconds += d * e._milliseconds, a._days += d * e._days, a._months += d * e._months, a._bubble()
+ }
+ // supports only 2.0-style add(1, 's') or add(duration)
+ function Wc(a, b) {
+ return Vc(this, a, b, 1)
+ }
+ // supports only 2.0-style subtract(1, 's') or subtract(duration)
+ function Xc(a, b) {
+ return Vc(this, a, b, -1)
+ }
+
+ function Yc(a) {
+ return 0 > a ? Math.floor(a) : Math.ceil(a)
+ }
+
+ function Zc() {
+ var a, b, c, d, e, f = this._milliseconds,
+ g = this._days,
+ h = this._months,
+ i = this._data;
+ // if we have a mix of positive and negative values, bubble down first
+ // check: https://github.com/moment/moment/issues/2166
+ // The following code bubbles up values, see the tests for
+ // examples of what that means.
+ // convert days to months
+ // 12 months -> 1 year
+ return f >= 0 && g >= 0 && h >= 0 || 0 >= f && 0 >= g && 0 >= h || (f += 864e5 * Yc(_c(h) + g), g = 0, h = 0), i.milliseconds = f % 1e3, a = s(f / 1e3), i.seconds = a % 60, b = s(a / 60), i.minutes = b % 60, c = s(b / 60), i.hours = c % 24, g += s(c / 24), e = s($c(g)), h += e, g -= Yc(_c(e)), d = s(h / 12), h %= 12, i.days = g, i.months = h, i.years = d, this
+ }
+
+ function $c(a) {
+ // 400 years have 146097 days (taking into account leap year rules)
+ // 400 years have 12 months === 4800
+ return 4800 * a / 146097
+ }
+
+ function _c(a) {
+ // the reverse of daysToMonths
+ return 146097 * a / 4800
+ }
+
+ function ad(a) {
+ var b, c, d = this._milliseconds;
+ if (a = J(a), "month" === a || "year" === a) return b = this._days + d / 864e5, c = this._months + $c(b), "month" === a ? c : c / 12;
+ switch (b = this._days + Math.round(_c(this._months)), a) {
+ case "week":
+ return b / 7 + d / 6048e5;
+ case "day":
+ return b + d / 864e5;
+ case "hour":
+ return 24 * b + d / 36e5;
+ case "minute":
+ return 1440 * b + d / 6e4;
+ case "second":
+ return 86400 * b + d / 1e3;
+ // Math.floor prevents floating point math errors here
+ case "millisecond":
+ return Math.floor(864e5 * b) + d;
+ default:
+ throw new Error("Unknown unit " + a)
+ }
+ }
+ // TODO: Use this.as('ms')?
+ function bd() {
+ return this._milliseconds + 864e5 * this._days + this._months % 12 * 2592e6 + 31536e6 * t(this._months / 12)
+ }
+
+ function cd(a) {
+ return function() {
+ return this.as(a)
+ }
+ }
+
+ function dd(a) {
+ return a = J(a), this[a + "s"]()
+ }
+
+ function ed(a) {
+ return function() {
+ return this._data[a]
+ }
+ }
+
+ function fd() {
+ return s(this.days() / 7)
+ }
+ // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize
+ function gd(a, b, c, d, e) {
+ return e.relativeTime(b || 1, !!c, a, d)
+ }
+
+ function hd(a, b, c) {
+ var d = Mb(a).abs(),
+ e = jf(d.as("s")),
+ f = jf(d.as("m")),
+ g = jf(d.as("h")),
+ h = jf(d.as("d")),
+ i = jf(d.as("M")),
+ j = jf(d.as("y")),
+ k = e < kf.s && ["s", e] || 1 >= f && ["m"] || f < kf.m && ["mm", f] || 1 >= g && ["h"] || g < kf.h && ["hh", g] || 1 >= h && ["d"] || h < kf.d && ["dd", h] || 1 >= i && ["M"] || i < kf.M && ["MM", i] || 1 >= j && ["y"] || ["yy", j];
+ return k[2] = b, k[3] = +a > 0, k[4] = c, gd.apply(null, k)
+ }
+ // This function allows you to set the rounding function for relative time strings
+ function id(a) {
+ return void 0 === a ? jf : "function" == typeof a ? (jf = a, !0) : !1
+ }
+ // This function allows you to set a threshold for relative time strings
+ function jd(a, b) {
+ return void 0 === kf[a] ? !1 : void 0 === b ? kf[a] : (kf[a] = b, !0)
+ }
+
+ function kd(a) {
+ var b = this.localeData(),
+ c = hd(this, !a, b);
+ return a && (c = b.pastFuture(+this, c)), b.postformat(c)
+ }
+
+ function ld() {
+ // for ISO strings we do not use the normal bubbling rules:
+ // * milliseconds bubble up until they become hours
+ // * days do not bubble at all
+ // * months bubble up until they become years
+ // This is because there is no context-free conversion between hours and days
+ // (think of clock changes)
+ // and also not between days and months (28-31 days per month)
+ var a, b, c, d = lf(this._milliseconds) / 1e3,
+ e = lf(this._days),
+ f = lf(this._months);
+ a = s(d / 60), b = s(a / 60), d %= 60, a %= 60, c = s(f / 12), f %= 12;
+ // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js
+ var g = c,
+ h = f,
+ i = e,
+ j = b,
+ k = a,
+ l = d,
+ m = this.asSeconds();
+ return m ? (0 > m ? "-" : "") + "P" + (g ? g + "Y" : "") + (h ? h + "M" : "") + (i ? i + "D" : "") + (j || k || l ? "T" : "") + (j ? j + "H" : "") + (k ? k + "M" : "") + (l ? l + "S" : "") : "P0D"
+ }
+ var md, nd;
+ nd = Array.prototype.some ? Array.prototype.some : function(a) {
+ for (var b = Object(this), c = b.length >>> 0, d = 0; c > d; d++)
+ if (d in b && a.call(this, b[d], d, b)) return !0;
+ return !1
+ };
+ // Plugins that add properties should also add the key here (null value),
+ // so we can properly clone ourselves.
+ var od = a.momentProperties = [],
+ pd = !1,
+ qd = {};
+ a.suppressDeprecationWarnings = !1, a.deprecationHandler = null;
+ var rd;
+ rd = Object.keys ? Object.keys : function(a) {
+ var b, c = [];
+ for (b in a) h(a, b) && c.push(b);
+ return c
+ };
+ var sd, td = {
+ sameDay: "[Today at] LT",
+ nextDay: "[Tomorrow at] LT",
+ nextWeek: "dddd [at] LT",
+ lastDay: "[Yesterday at] LT",
+ lastWeek: "[Last] dddd [at] LT",
+ sameElse: "L"
+ },
+ ud = {
+ 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"
+ },
+ vd = "Invalid date",
+ wd = "%d",
+ xd = /\d{1,2}/,
+ yd = {
+ future: "in %s",
+ past: "%s ago",
+ s: "a few 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"
+ },
+ zd = {},
+ Ad = {},
+ Bd = /(\[[^\[]*\])|(\\)?([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,
+ Cd = /(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,
+ Dd = {},
+ Ed = {},
+ Fd = /\d/,
+ Gd = /\d\d/,
+ Hd = /\d{3}/,
+ Id = /\d{4}/,
+ Jd = /[+-]?\d{6}/,
+ Kd = /\d\d?/,
+ Ld = /\d\d\d\d?/,
+ Md = /\d\d\d\d\d\d?/,
+ Nd = /\d{1,3}/,
+ Od = /\d{1,4}/,
+ Pd = /[+-]?\d{1,6}/,
+ Qd = /\d+/,
+ Rd = /[+-]?\d+/,
+ Sd = /Z|[+-]\d\d:?\d\d/gi,
+ Td = /Z|[+-]\d\d(?::?\d\d)?/gi,
+ Ud = /[+-]?\d+(\.\d{1,3})?/,
+ Vd = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i,
+ Wd = {},
+ Xd = {},
+ Yd = 0,
+ Zd = 1,
+ $d = 2,
+ _d = 3,
+ ae = 4,
+ be = 5,
+ ce = 6,
+ de = 7,
+ ee = 8;
+ sd = Array.prototype.indexOf ? Array.prototype.indexOf : function(a) {
+ // I know
+ var b;
+ for (b = 0; b < this.length; ++b)
+ if (this[b] === a) return b;
+ return -1
+ }, T("M", ["MM", 2], "Mo", function() {
+ return this.month() + 1
+ }), T("MMM", 0, 0, function(a) {
+ return this.localeData().monthsShort(this, a)
+ }), T("MMMM", 0, 0, function(a) {
+ return this.localeData().months(this, a)
+ }), I("month", "M"), L("month", 8), Y("M", Kd), Y("MM", Kd, Gd), Y("MMM", function(a, b) {
+ return b.monthsShortRegex(a)
+ }), Y("MMMM", function(a, b) {
+ return b.monthsRegex(a)
+ }), aa(["M", "MM"], function(a, b) {
+ b[Zd] = t(a) - 1
+ }), aa(["MMM", "MMMM"], function(a, b, c, d) {
+ var e = c._locale.monthsParse(a, d, c._strict);
+ null != e ? b[Zd] = e : l(c).invalidMonth = a
+ });
+ // LOCALES
+ var fe = /D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/,
+ ge = "January_February_March_April_May_June_July_August_September_October_November_December".split("_"),
+ he = "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),
+ ie = Vd,
+ je = Vd;
+ // FORMATTING
+ T("Y", 0, 0, function() {
+ var a = this.year();
+ return 9999 >= a ? "" + a : "+" + a
+ }), T(0, ["YY", 2], 0, function() {
+ return this.year() % 100
+ }), T(0, ["YYYY", 4], 0, "year"), T(0, ["YYYYY", 5], 0, "year"), T(0, ["YYYYYY", 6, !0], 0, "year"),
+ // ALIASES
+ I("year", "y"),
+ // PRIORITIES
+ L("year", 1),
+ // PARSING
+ Y("Y", Rd), Y("YY", Kd, Gd), Y("YYYY", Od, Id), Y("YYYYY", Pd, Jd), Y("YYYYYY", Pd, Jd), aa(["YYYYY", "YYYYYY"], Yd), aa("YYYY", function(b, c) {
+ c[Yd] = 2 === b.length ? a.parseTwoDigitYear(b) : t(b)
+ }), aa("YY", function(b, c) {
+ c[Yd] = a.parseTwoDigitYear(b)
+ }), aa("Y", function(a, b) {
+ b[Yd] = parseInt(a, 10)
+ }),
+ // HOOKS
+ a.parseTwoDigitYear = function(a) {
+ return t(a) + (t(a) > 68 ? 1900 : 2e3)
+ };
+ // MOMENTS
+ var ke = N("FullYear", !0);
+ // FORMATTING
+ T("w", ["ww", 2], "wo", "week"), T("W", ["WW", 2], "Wo", "isoWeek"),
+ // ALIASES
+ I("week", "w"), I("isoWeek", "W"),
+ // PRIORITIES
+ L("week", 5), L("isoWeek", 5),
+ // PARSING
+ Y("w", Kd), Y("ww", Kd, Gd), Y("W", Kd), Y("WW", Kd, Gd), ba(["w", "ww", "W", "WW"], function(a, b, c, d) {
+ b[d.substr(0, 1)] = t(a)
+ });
+ var le = {
+ dow: 0, // Sunday is the first day of the week.
+ doy: 6
+ };
+ // FORMATTING
+ T("d", 0, "do", "day"), T("dd", 0, 0, function(a) {
+ return this.localeData().weekdaysMin(this, a)
+ }), T("ddd", 0, 0, function(a) {
+ return this.localeData().weekdaysShort(this, a)
+ }), T("dddd", 0, 0, function(a) {
+ return this.localeData().weekdays(this, a)
+ }), T("e", 0, 0, "weekday"), T("E", 0, 0, "isoWeekday"),
+ // ALIASES
+ I("day", "d"), I("weekday", "e"), I("isoWeekday", "E"),
+ // PRIORITY
+ L("day", 11), L("weekday", 11), L("isoWeekday", 11),
+ // PARSING
+ Y("d", Kd), Y("e", Kd), Y("E", Kd), Y("dd", function(a, b) {
+ return b.weekdaysMinRegex(a)
+ }), Y("ddd", function(a, b) {
+ return b.weekdaysShortRegex(a)
+ }), Y("dddd", function(a, b) {
+ return b.weekdaysRegex(a)
+ }), ba(["dd", "ddd", "dddd"], function(a, b, c, d) {
+ var e = c._locale.weekdaysParse(a, d, c._strict);
+ // if we didn't get a weekday name, mark the date as invalid
+ null != e ? b.d = e : l(c).invalidWeekday = a
+ }), ba(["d", "e", "E"], function(a, b, c, d) {
+ b[d] = t(a)
+ });
+ // LOCALES
+ var me = "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),
+ ne = "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
+ oe = "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
+ pe = Vd,
+ qe = Vd,
+ re = Vd;
+ T("H", ["HH", 2], 0, "hour"), T("h", ["hh", 2], 0, Qa), T("k", ["kk", 2], 0, Ra), T("hmm", 0, 0, function() {
+ return "" + Qa.apply(this) + S(this.minutes(), 2)
+ }), T("hmmss", 0, 0, function() {
+ return "" + Qa.apply(this) + S(this.minutes(), 2) + S(this.seconds(), 2)
+ }), T("Hmm", 0, 0, function() {
+ return "" + this.hours() + S(this.minutes(), 2)
+ }), T("Hmmss", 0, 0, function() {
+ return "" + this.hours() + S(this.minutes(), 2) + S(this.seconds(), 2)
+ }), Sa("a", !0), Sa("A", !1),
+ // ALIASES
+ I("hour", "h"),
+ // PRIORITY
+ L("hour", 13), Y("a", Ta), Y("A", Ta), Y("H", Kd), Y("h", Kd), Y("HH", Kd, Gd), Y("hh", Kd, Gd), Y("hmm", Ld), Y("hmmss", Md), Y("Hmm", Ld), Y("Hmmss", Md), aa(["H", "HH"], _d), aa(["a", "A"], function(a, b, c) {
+ c._isPm = c._locale.isPM(a), c._meridiem = a
+ }), aa(["h", "hh"], function(a, b, c) {
+ b[_d] = t(a), l(c).bigHour = !0
+ }), aa("hmm", function(a, b, c) {
+ var d = a.length - 2;
+ b[_d] = t(a.substr(0, d)), b[ae] = t(a.substr(d)), l(c).bigHour = !0
+ }), aa("hmmss", function(a, b, c) {
+ var d = a.length - 4,
+ e = a.length - 2;
+ b[_d] = t(a.substr(0, d)), b[ae] = t(a.substr(d, 2)), b[be] = t(a.substr(e)), l(c).bigHour = !0
+ }), aa("Hmm", function(a, b, c) {
+ var d = a.length - 2;
+ b[_d] = t(a.substr(0, d)), b[ae] = t(a.substr(d))
+ }), aa("Hmmss", function(a, b, c) {
+ var d = a.length - 4,
+ e = a.length - 2;
+ b[_d] = t(a.substr(0, d)), b[ae] = t(a.substr(d, 2)), b[be] = t(a.substr(e))
+ });
+ var se, te = /[ap]\.?m?\.?/i,
+ ue = N("Hours", !0),
+ ve = {
+ calendar: td,
+ longDateFormat: ud,
+ invalidDate: vd,
+ ordinal: wd,
+ ordinalParse: xd,
+ relativeTime: yd,
+ months: ge,
+ monthsShort: he,
+ week: le,
+ weekdays: me,
+ weekdaysMin: oe,
+ weekdaysShort: ne,
+ meridiemParse: te
+ },
+ we = {},
+ xe = /^\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)?)?/,
+ ye = /^\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)?)?/,
+ ze = /Z|[+-]\d\d(?::?\d\d)?/,
+ Ae = [
+ ["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}/],
+ // YYYYMM is NOT allowed by the standard
+ ["GGGG[W]WWE", /\d{4}W\d{3}/],
+ ["GGGG[W]WW", /\d{4}W\d{2}/, !1],
+ ["YYYYDDD", /\d{7}/]
+ ],
+ Be = [
+ ["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/]
+ ],
+ Ce = /^\/?Date\((\-?\d+)/i;
+ a.createFromInputFallback = w("moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.", function(a) {
+ a._d = new Date(a._i + (a._useUTC ? " UTC" : ""))
+ }),
+ // constant that refers to the ISO standard
+ a.ISO_8601 = function() {};
+ var De = w("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
+ var a = rb.apply(null, arguments);
+ return this.isValid() && a.isValid() ? this > a ? this : a : n()
+ }),
+ Ee = w("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/", function() {
+ var a = rb.apply(null, arguments);
+ return this.isValid() && a.isValid() ? a > this ? this : a : n()
+ }),
+ Fe = function() {
+ return Date.now ? Date.now() : +new Date
+ };
+ xb("Z", ":"), xb("ZZ", ""),
+ // PARSING
+ Y("Z", Td), Y("ZZ", Td), aa(["Z", "ZZ"], function(a, b, c) {
+ c._useUTC = !0, c._tzm = yb(Td, a)
+ });
+ // HELPERS
+ // timezone chunker
+ // '+10:00' > ['10', '00']
+ // '-1530' > ['-15', '30']
+ var Ge = /([\+\-]|\d\d)/gi;
+ // HOOKS
+ // This function will be called whenever a moment is mutated.
+ // It is intended to keep the offset in sync with the timezone.
+ a.updateOffset = function() {};
+ // ASP.NET json date format regex
+ var He = /^(\-)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?\d*)?$/,
+ Ie = /^(-)?P(?:(-?[0-9,.]*)Y)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)W)?(?:(-?[0-9,.]*)D)?(?:T(?:(-?[0-9,.]*)H)?(?:(-?[0-9,.]*)M)?(?:(-?[0-9,.]*)S)?)?$/;
+ Mb.fn = vb.prototype;
+ var Je = Rb(1, "add"),
+ Ke = Rb(-1, "subtract");
+ a.defaultFormat = "YYYY-MM-DDTHH:mm:ssZ", a.defaultFormatUtc = "YYYY-MM-DDTHH:mm:ss[Z]";
+ var Le = w("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.", function(a) {
+ return void 0 === a ? this.localeData() : this.locale(a)
+ });
+ // FORMATTING
+ T(0, ["gg", 2], 0, function() {
+ return this.weekYear() % 100
+ }), T(0, ["GG", 2], 0, function() {
+ return this.isoWeekYear() % 100
+ }), xc("gggg", "weekYear"), xc("ggggg", "weekYear"), xc("GGGG", "isoWeekYear"), xc("GGGGG", "isoWeekYear"),
+ // ALIASES
+ I("weekYear", "gg"), I("isoWeekYear", "GG"),
+ // PRIORITY
+ L("weekYear", 1), L("isoWeekYear", 1),
+ // PARSING
+ Y("G", Rd), Y("g", Rd), Y("GG", Kd, Gd), Y("gg", Kd, Gd), Y("GGGG", Od, Id), Y("gggg", Od, Id), Y("GGGGG", Pd, Jd), Y("ggggg", Pd, Jd), ba(["gggg", "ggggg", "GGGG", "GGGGG"], function(a, b, c, d) {
+ b[d.substr(0, 2)] = t(a)
+ }), ba(["gg", "GG"], function(b, c, d, e) {
+ c[e] = a.parseTwoDigitYear(b)
+ }),
+ // FORMATTING
+ T("Q", 0, "Qo", "quarter"),
+ // ALIASES
+ I("quarter", "Q"),
+ // PRIORITY
+ L("quarter", 7),
+ // PARSING
+ Y("Q", Fd), aa("Q", function(a, b) {
+ b[Zd] = 3 * (t(a) - 1)
+ }),
+ // FORMATTING
+ T("D", ["DD", 2], "Do", "date"),
+ // ALIASES
+ I("date", "D"),
+ // PRIOROITY
+ L("date", 9),
+ // PARSING
+ Y("D", Kd), Y("DD", Kd, Gd), Y("Do", function(a, b) {
+ return a ? b._ordinalParse : b._ordinalParseLenient
+ }), aa(["D", "DD"], $d), aa("Do", function(a, b) {
+ b[$d] = t(a.match(Kd)[0], 10)
+ });
+ // MOMENTS
+ var Me = N("Date", !0);
+ // FORMATTING
+ T("DDD", ["DDDD", 3], "DDDo", "dayOfYear"),
+ // ALIASES
+ I("dayOfYear", "DDD"),
+ // PRIORITY
+ L("dayOfYear", 4),
+ // PARSING
+ Y("DDD", Nd), Y("DDDD", Hd), aa(["DDD", "DDDD"], function(a, b, c) {
+ c._dayOfYear = t(a)
+ }),
+ // FORMATTING
+ T("m", ["mm", 2], 0, "minute"),
+ // ALIASES
+ I("minute", "m"),
+ // PRIORITY
+ L("minute", 14),
+ // PARSING
+ Y("m", Kd), Y("mm", Kd, Gd), aa(["m", "mm"], ae);
+ // MOMENTS
+ var Ne = N("Minutes", !1);
+ // FORMATTING
+ T("s", ["ss", 2], 0, "second"),
+ // ALIASES
+ I("second", "s"),
+ // PRIORITY
+ L("second", 15),
+ // PARSING
+ Y("s", Kd), Y("ss", Kd, Gd), aa(["s", "ss"], be);
+ // MOMENTS
+ var Oe = N("Seconds", !1);
+ // FORMATTING
+ T("S", 0, 0, function() {
+ return ~~(this.millisecond() / 100)
+ }), T(0, ["SS", 2], 0, function() {
+ return ~~(this.millisecond() / 10)
+ }), T(0, ["SSS", 3], 0, "millisecond"), T(0, ["SSSS", 4], 0, function() {
+ return 10 * this.millisecond()
+ }), T(0, ["SSSSS", 5], 0, function() {
+ return 100 * this.millisecond()
+ }), T(0, ["SSSSSS", 6], 0, function() {
+ return 1e3 * this.millisecond()
+ }), T(0, ["SSSSSSS", 7], 0, function() {
+ return 1e4 * this.millisecond()
+ }), T(0, ["SSSSSSSS", 8], 0, function() {
+ return 1e5 * this.millisecond()
+ }), T(0, ["SSSSSSSSS", 9], 0, function() {
+ return 1e6 * this.millisecond()
+ }),
+ // ALIASES
+ I("millisecond", "ms"),
+ // PRIORITY
+ L("millisecond", 16),
+ // PARSING
+ Y("S", Nd, Fd), Y("SS", Nd, Gd), Y("SSS", Nd, Hd);
+ var Pe;
+ for (Pe = "SSSS"; Pe.length <= 9; Pe += "S") Y(Pe, Qd);
+ for (Pe = "S"; Pe.length <= 9; Pe += "S") aa(Pe, Gc);
+ // MOMENTS
+ var Qe = N("Milliseconds", !1);
+ // FORMATTING
+ T("z", 0, 0, "zoneAbbr"), T("zz", 0, 0, "zoneName");
+ var Re = q.prototype;
+ Re.add = Je, Re.calendar = Ub, Re.clone = Vb, Re.diff = ac, Re.endOf = mc, Re.format = ec, Re.from = fc, Re.fromNow = gc, Re.to = hc, Re.toNow = ic, Re.get = Q, Re.invalidAt = vc, Re.isAfter = Wb, Re.isBefore = Xb, Re.isBetween = Yb, Re.isSame = Zb, Re.isSameOrAfter = $b, Re.isSameOrBefore = _b, Re.isValid = tc, Re.lang = Le, Re.locale = jc, Re.localeData = kc, Re.max = Ee, Re.min = De, Re.parsingFlags = uc, Re.set = R, Re.startOf = lc, Re.subtract = Ke, Re.toArray = qc, Re.toObject = rc, Re.toDate = pc, Re.toISOString = dc, Re.toJSON = sc, Re.toString = cc, Re.unix = oc, Re.valueOf = nc, Re.creationData = wc,
+ // Year
+ Re.year = ke, Re.isLeapYear = qa,
+ // Week Year
+ Re.weekYear = yc, Re.isoWeekYear = zc,
+ // Quarter
+ Re.quarter = Re.quarters = Ec,
+ // Month
+ Re.month = ja, Re.daysInMonth = ka,
+ // Week
+ Re.week = Re.weeks = Aa, Re.isoWeek = Re.isoWeeks = Ba, Re.weeksInYear = Bc, Re.isoWeeksInYear = Ac,
+ // Day
+ Re.date = Me, Re.day = Re.days = Ja, Re.weekday = Ka, Re.isoWeekday = La, Re.dayOfYear = Fc,
+ // Hour
+ Re.hour = Re.hours = ue,
+ // Minute
+ Re.minute = Re.minutes = Ne,
+ // Second
+ Re.second = Re.seconds = Oe,
+ // Millisecond
+ Re.millisecond = Re.milliseconds = Qe,
+ // Offset
+ Re.utcOffset = Bb, Re.utc = Db, Re.local = Eb, Re.parseZone = Fb, Re.hasAlignedHourOffset = Gb, Re.isDST = Hb, Re.isLocal = Jb, Re.isUtcOffset = Kb, Re.isUtc = Lb, Re.isUTC = Lb,
+ // Timezone
+ Re.zoneAbbr = Hc, Re.zoneName = Ic,
+ // Deprecations
+ Re.dates = w("dates accessor is deprecated. Use date instead.", Me), Re.months = w("months accessor is deprecated. Use month instead", ja), Re.years = w("years accessor is deprecated. Use year instead", ke), Re.zone = w("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/", Cb), Re.isDSTShifted = w("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information", Ib);
+ var Se = Re,
+ Te = B.prototype;
+ Te.calendar = C, Te.longDateFormat = D, Te.invalidDate = E, Te.ordinal = F, Te.preparse = Lc, Te.postformat = Lc, Te.relativeTime = G, Te.pastFuture = H, Te.set = z,
+ // Month
+ Te.months = ea, Te.monthsShort = fa, Te.monthsParse = ha, Te.monthsRegex = ma, Te.monthsShortRegex = la,
+ // Week
+ Te.week = xa, Te.firstDayOfYear = za, Te.firstDayOfWeek = ya,
+ // Day of Week
+ Te.weekdays = Ea, Te.weekdaysMin = Ga, Te.weekdaysShort = Fa, Te.weekdaysParse = Ia, Te.weekdaysRegex = Ma, Te.weekdaysShortRegex = Na, Te.weekdaysMinRegex = Oa,
+ // Hours
+ Te.isPM = Ua, Te.meridiem = Va, Za("en", {
+ ordinalParse: /\d{1,2}(th|st|nd|rd)/,
+ ordinal: function(a) {
+ var b = a % 10,
+ c = 1 === t(a % 100 / 10) ? "th" : 1 === b ? "st" : 2 === b ? "nd" : 3 === b ? "rd" : "th";
+ return a + c
+ }
+ }),
+ // Side effect imports
+ a.lang = w("moment.lang is deprecated. Use moment.locale instead.", Za), a.langData = w("moment.langData is deprecated. Use moment.localeData instead.", ab);
+ var Ue = Math.abs,
+ Ve = cd("ms"),
+ We = cd("s"),
+ Xe = cd("m"),
+ Ye = cd("h"),
+ Ze = cd("d"),
+ $e = cd("w"),
+ _e = cd("M"),
+ af = cd("y"),
+ bf = ed("milliseconds"),
+ cf = ed("seconds"),
+ df = ed("minutes"),
+ ef = ed("hours"),
+ ff = ed("days"),
+ gf = ed("months"),
+ hf = ed("years"),
+ jf = Math.round,
+ kf = {
+ s: 45, // seconds to minute
+ m: 45, // minutes to hour
+ h: 22, // hours to day
+ d: 26, // days to month
+ M: 11
+ },
+ lf = Math.abs,
+ mf = vb.prototype;
+ mf.abs = Uc, mf.add = Wc, mf.subtract = Xc, mf.as = ad, mf.asMilliseconds = Ve, mf.asSeconds = We, mf.asMinutes = Xe, mf.asHours = Ye, mf.asDays = Ze, mf.asWeeks = $e, mf.asMonths = _e, mf.asYears = af, mf.valueOf = bd, mf._bubble = Zc, mf.get = dd, mf.milliseconds = bf, mf.seconds = cf, mf.minutes = df, mf.hours = ef, mf.days = ff, mf.weeks = fd, mf.months = gf, mf.years = hf, mf.humanize = kd, mf.toISOString = ld, mf.toString = ld, mf.toJSON = ld, mf.locale = jc, mf.localeData = kc,
+ // Deprecations
+ mf.toIsoString = w("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)", ld), mf.lang = Le,
+ // Side effect imports
+ // FORMATTING
+ T("X", 0, 0, "unix"), T("x", 0, 0, "valueOf"),
+ // PARSING
+ Y("x", Rd), Y("X", Ud), aa("X", function(a, b, c) {
+ c._d = new Date(1e3 * parseFloat(a, 10))
+ }), aa("x", function(a, b, c) {
+ c._d = new Date(t(a))
+ }),
+ // Side effect imports
+ a.version = "2.14.1", b(rb), a.fn = Se, a.min = tb, a.max = ub, a.now = Fe, a.utc = j, a.unix = Jc, a.months = Pc, a.isDate = f, a.locale = Za, a.invalid = n, a.duration = Mb, a.isMoment = r, a.weekdays = Rc, a.parseZone = Kc, a.localeData = ab, a.isDuration = wb, a.monthsShort = Qc, a.weekdaysMin = Tc, a.defineLocale = $a, a.updateLocale = _a, a.locales = bb, a.weekdaysShort = Sc, a.normalizeUnits = J, a.relativeTimeRounding = id, a.relativeTimeThreshold = jd, a.calendarFormat = Tb, a.prototype = Se;
+ var nf = a;
+ return nf
+});
\ No newline at end of file
Index: lams_central/web/includes/javascript/nouislider.min.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/nouislider.min.js (revision 0)
+++ lams_central/web/includes/javascript/nouislider.min.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,3 @@
+/*! nouislider - 9.1.0 - 2016-12-10 16:00:32 */
+
+!function(a){"function"==typeof define&&define.amd?define([],a):"object"==typeof exports?module.exports=a():window.noUiSlider=a()}(function(){"use strict";function a(a,b){var c=document.createElement("div");return j(c,b),a.appendChild(c),c}function b(a){return a.filter(function(a){return!this[a]&&(this[a]=!0)},{})}function c(a,b){return Math.round(a/b)*b}function d(a,b){var c=a.getBoundingClientRect(),d=a.ownerDocument,e=d.documentElement,f=m();return/webkit.*Chrome.*Mobile/i.test(navigator.userAgent)&&(f.x=0),b?c.top+f.y-e.clientTop:c.left+f.x-e.clientLeft}function e(a){return"number"==typeof a&&!isNaN(a)&&isFinite(a)}function f(a,b,c){c>0&&(j(a,b),setTimeout(function(){k(a,b)},c))}function g(a){return Math.max(Math.min(a,100),0)}function h(a){return Array.isArray(a)?a:[a]}function i(a){a=String(a);var b=a.split(".");return b.length>1?b[1].length:0}function j(a,b){a.classList?a.classList.add(b):a.className+=" "+b}function k(a,b){a.classList?a.classList.remove(b):a.className=a.className.replace(new RegExp("(^|\\b)"+b.split(" ").join("|")+"(\\b|$)","gi")," ")}function l(a,b){return a.classList?a.classList.contains(b):new RegExp("\\b"+b+"\\b").test(a.className)}function m(){var a=void 0!==window.pageXOffset,b="CSS1Compat"===(document.compatMode||""),c=a?window.pageXOffset:b?document.documentElement.scrollLeft:document.body.scrollLeft,d=a?window.pageYOffset:b?document.documentElement.scrollTop:document.body.scrollTop;return{x:c,y:d}}function n(){return window.navigator.pointerEnabled?{start:"pointerdown",move:"pointermove",end:"pointerup"}:window.navigator.msPointerEnabled?{start:"MSPointerDown",move:"MSPointerMove",end:"MSPointerUp"}:{start:"mousedown touchstart",move:"mousemove touchmove",end:"mouseup touchend"}}function o(a,b){return 100/(b-a)}function p(a,b){return 100*b/(a[1]-a[0])}function q(a,b){return p(a,a[0]<0?b+Math.abs(a[0]):b-a[0])}function r(a,b){return b*(a[1]-a[0])/100+a[0]}function s(a,b){for(var c=1;a>=b[c];)c+=1;return c}function t(a,b,c){if(c>=a.slice(-1)[0])return 100;var d,e,f,g,h=s(c,a);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],f+q([d,e],c)/o(f,g)}function u(a,b,c){if(c>=100)return a.slice(-1)[0];var d,e,f,g,h=s(c,b);return d=a[h-1],e=a[h],f=b[h-1],g=b[h],r([d,e],(c-f)*o(f,g))}function v(a,b,d,e){if(100===e)return e;var f,g,h=s(e,a);return d?(f=a[h-1],g=a[h],e-f>(g-f)/2?g:f):b[h-1]?a[h-1]+c(e-a[h-1],b[h-1]):e}function w(a,b,c){var d;if("number"==typeof b&&(b=[b]),"[object Array]"!==Object.prototype.toString.call(b))throw new Error("noUiSlider: 'range' contains invalid value.");if(d="min"===a?0:"max"===a?100:parseFloat(a),!e(d)||!e(b[0]))throw new Error("noUiSlider: 'range' value isn't numeric.");c.xPct.push(d),c.xVal.push(b[0]),d?c.xSteps.push(!isNaN(b[1])&&b[1]):isNaN(b[1])||(c.xSteps[0]=b[1]),c.xHighestCompleteStep.push(0)}function x(a,b,c){if(!b)return!0;c.xSteps[a]=p([c.xVal[a],c.xVal[a+1]],b)/o(c.xPct[a],c.xPct[a+1]);var d=(c.xVal[a+1]-c.xVal[a])/c.xNumSteps[a],e=Math.ceil(Number(d.toFixed(3))-1),f=c.xVal[a]+c.xNumSteps[a]*e;c.xHighestCompleteStep[a]=f}function y(a,b,c,d){this.xPct=[],this.xVal=[],this.xSteps=[d||!1],this.xNumSteps=[!1],this.xHighestCompleteStep=[],this.snap=b,this.direction=c;var e,f=[];for(e in a)a.hasOwnProperty(e)&&f.push([a[e],e]);for(f.length&&"object"==typeof f[0][0]?f.sort(function(a,b){return a[0][0]-b[0][0]}):f.sort(function(a,b){return a[0]-b[0]}),e=0;e
=50)throw new Error("noUiSlider: 'padding' option must be less than half the range.")}}function K(a,b){switch(b){case"ltr":a.dir=0;break;case"rtl":a.dir=1;break;default:throw new Error("noUiSlider: 'direction' option was not recognized.")}}function L(a,b){if("string"!=typeof b)throw new Error("noUiSlider: 'behaviour' must be a string containing options.");var c=b.indexOf("tap")>=0,d=b.indexOf("drag")>=0,e=b.indexOf("fixed")>=0,f=b.indexOf("snap")>=0,g=b.indexOf("hover")>=0;if(e){if(2!==a.handles)throw new Error("noUiSlider: 'fixed' behaviour must be used with 2 handles");H(a,a.start[1]-a.start[0])}a.events={tap:c||f,drag:d,fixed:e,snap:f,hover:g}}function M(a,b){if(b!==!1)if(b===!0){a.tooltips=[];for(var c=0;c-1?1:"steps"===c?2:0,!g&&i&&(q=0),l===v&&j||(f[n.toFixed(5)]=[l,q]),k=n}}),f}function w(a,b,c){function d(a,b){var c=b===e.cssClasses.value,d=c?m:n,f=c?k:l;return b+" "+d[e.ort]+" "+f[a]}function f(a,b,c){return'class="'+d(c[1],b)+'" style="'+e.style+": "+a+'%"'}function g(a,d){d[1]=d[1]&&b?b(d[0],d[1]):d[1],i+="",d[1]&&(i+=""+c.to(d[0])+"
")}var h=document.createElement("div"),i="",k=[e.cssClasses.valueNormal,e.cssClasses.valueLarge,e.cssClasses.valueSub],l=[e.cssClasses.markerNormal,e.cssClasses.markerLarge,e.cssClasses.markerSub],m=[e.cssClasses.valueHorizontal,e.cssClasses.valueVertical],n=[e.cssClasses.markerHorizontal,e.cssClasses.markerVertical];return j(h,e.cssClasses.pips),j(h,0===e.ort?e.cssClasses.pipsHorizontal:e.cssClasses.pipsVertical),Object.keys(a).forEach(function(b){g(b,a[b])}),h.innerHTML=i,h}function x(a){var b=a.mode,c=a.density||1,d=a.filter||!1,e=a.values||!1,f=a.stepped||!1,g=u(b,e,f),h=v(c,b,g),i=a.format||{to:Math.round};return fa.appendChild(w(h,d,i))}function y(){var a=aa.getBoundingClientRect(),b="offset"+["Width","Height"][e.ort];return 0===e.ort?a.width||aa[b]:a.height||aa[b]}function z(a,b,c,d){var f=function(b){return!fa.hasAttribute("disabled")&&(!l(fa,e.cssClasses.tap)&&(!!(b=A(b,d.pageOffset))&&(!(a===ea.start&&void 0!==b.buttons&&b.buttons>1)&&((!d.hover||!b.buttons)&&(b.calcPoint=b.points[e.ort],void c(b,d))))))},g=[];return a.split(" ").forEach(function(a){b.addEventListener(a,f,!1),g.push([a,f])}),g}function A(a,b){a.preventDefault();var c,d,e=0===a.type.indexOf("touch"),f=0===a.type.indexOf("mouse"),g=0===a.type.indexOf("pointer");if(0===a.type.indexOf("MSPointer")&&(g=!0),e){if(a.touches.length>1)return!1;c=a.changedTouches[0].pageX,d=a.changedTouches[0].pageY}return b=b||m(),(f||g)&&(c=a.clientX+b.x,d=a.clientY+b.y),a.pageOffset=b,a.points=[c,d],a.cursor=f||g,a}function B(a){var b=a-d(aa,e.ort),c=100*b/y();return e.dir?100-c:c}function C(a){var b=100,c=!1;return ba.forEach(function(d,e){if(!d.hasAttribute("disabled")){var f=Math.abs(ga[e]-a);f1?d.forEach(function(a,c){var d=M(e,a,e[a]+b,f[c],g[c]);d===!1?b=0:(b=d-e[a],e[a]=d)}):f=g=[!0];var h=!1;d.forEach(function(a,d){h=Q(a,c[a]+b,f[d],g[d])||h}),h&&d.forEach(function(a){E("update",a),E("slide",a)})}function E(a,b,c){Object.keys(la).forEach(function(d){var f=d.split(".")[0];a===f&&la[d].forEach(function(a){a.call(da,ka.map(e.format.to),b,ka.slice(),c||!1,ga.slice())})})}function F(a,b){"mouseout"===a.type&&"HTML"===a.target.nodeName&&null===a.relatedTarget&&H(a,b)}function G(a,b){if(navigator.appVersion.indexOf("MSIE 9")===-1&&0===a.buttons&&0!==b.buttonsProperty)return H(a,b);var c=(e.dir?-1:1)*(a.calcPoint-b.startCalcPoint),d=100*c/b.baseSize;D(c>0,d,b.locations,b.handleNumbers)}function H(a,b){ia&&(k(ia,e.cssClasses.active),ia=!1),a.cursor&&(document.body.style.cursor="",document.body.removeEventListener("selectstart",document.body.noUiListener)),document.documentElement.noUiListeners.forEach(function(a){document.documentElement.removeEventListener(a[0],a[1])}),k(fa,e.cssClasses.drag),P(),b.handleNumbers.forEach(function(a){E("set",a),E("change",a),E("end",a)})}function I(a,b){if(1===b.handleNumbers.length){var c=ba[b.handleNumbers[0]];if(c.hasAttribute("disabled"))return!1;ia=c.children[0],j(ia,e.cssClasses.active)}a.preventDefault(),a.stopPropagation();var d=z(ea.move,document.documentElement,G,{startCalcPoint:a.calcPoint,baseSize:y(),pageOffset:a.pageOffset,handleNumbers:b.handleNumbers,buttonsProperty:a.buttons,locations:ga.slice()}),f=z(ea.end,document.documentElement,H,{handleNumbers:b.handleNumbers}),g=z("mouseout",document.documentElement,F,{handleNumbers:b.handleNumbers});if(document.documentElement.noUiListeners=d.concat(f,g),a.cursor){document.body.style.cursor=getComputedStyle(a.target).cursor,ba.length>1&&j(fa,e.cssClasses.drag);var h=function(){return!1};document.body.noUiListener=h,document.body.addEventListener("selectstart",h,!1)}b.handleNumbers.forEach(function(a){E("start",a)})}function J(a){a.stopPropagation();var b=B(a.calcPoint),c=C(b);return c!==!1&&(e.events.snap||f(fa,e.cssClasses.tap,e.animationDuration),Q(c,b,!0,!0),P(),E("slide",c,!0),E("set",c,!0),E("change",c,!0),E("update",c,!0),void(e.events.snap&&I(a,{handleNumbers:[c]})))}function K(a){var b=B(a.calcPoint),c=ja.getStep(b),d=ja.fromStepping(c);Object.keys(la).forEach(function(a){"hover"===a.split(".")[0]&&la[a].forEach(function(a){a.call(da,d)})})}function L(a){a.fixed||ba.forEach(function(a,b){z(ea.start,a.children[0],I,{handleNumbers:[b]})}),a.tap&&z(ea.start,aa,J,{}),a.hover&&z(ea.move,aa,K,{hover:!0}),a.drag&&ca.forEach(function(b,c){if(b!==!1&&0!==c&&c!==ca.length-1){var d=ba[c-1],f=ba[c],g=[b];j(b,e.cssClasses.draggable),a.fixed&&(g.push(d.children[0]),g.push(f.children[0])),g.forEach(function(a){z(ea.start,a,I,{handles:[d,f],handleNumbers:[c-1,c]})})}})}function M(a,b,c,d,f){return ba.length>1&&(d&&b>0&&(c=Math.max(c,a[b-1]+e.margin)),f&&b1&&e.limit&&(d&&b>0&&(c=Math.min(c,a[b-1]+e.limit)),f&&b50?-1:1,c=3+(ba.length+b*a);ba[a].childNodes[0].style.zIndex=c})}function Q(a,b,c,d){return b=M(ga,a,b,c,d),b!==!1&&(O(a,b),!0)}function S(a){if(ca[a]){var b=0,c=100;0!==a&&(b=ga[a-1]),a!==ca.length-1&&(c=ga[a]),ca[a].style[e.style]=N(b),ca[a].style[e.styleOposite]=N(100-c)}}function T(a,b){null!==a&&a!==!1&&("number"==typeof a&&(a=String(a)),a=e.format.from(a),a===!1||isNaN(a)||Q(b,ja.toStepping(a),!1,!1))}function U(a,b){var c=h(a),d=void 0===ga[0];b=void 0===b||!!b,c.forEach(T),e.animate&&!d&&f(fa,e.cssClasses.tap,e.animationDuration),ha.forEach(function(a){Q(a,ga[a],!0,!1)}),P(),ha.forEach(function(a){E("update",a),null!==c[a]&&b&&E("set",a)})}function V(a){U(e.start,a)}function W(){var a=ka.map(e.format.to);return 1===a.length?a[0]:a}function X(){for(var a in e.cssClasses)e.cssClasses.hasOwnProperty(a)&&k(fa,e.cssClasses[a]);for(;fa.firstChild;)fa.removeChild(fa.firstChild);delete fa.noUiSlider}function Y(){return ga.map(function(a,b){var c=ja.getNearbySteps(a),d=ka[b],e=c.thisStep.step,f=null;e!==!1&&d+e>c.stepAfter.startValue&&(e=c.stepAfter.startValue-d),f=d>c.thisStep.startValue?c.thisStep.step:c.stepBefore.step!==!1&&d-c.stepBefore.highestStep,100===a?e=null:0===a&&(f=null);var g=ja.countStepDecimals();return null!==e&&e!==!1&&(e=Number(e.toFixed(g))),null!==f&&f!==!1&&(f=Number(f.toFixed(g))),[f,e]})}function Z(a,b){la[a]=la[a]||[],la[a].push(b),"update"===a.split(".")[0]&&ba.forEach(function(a,b){E("update",b)})}function $(a){var b=a&&a.split(".")[0],c=b&&a.substring(b.length);Object.keys(la).forEach(function(a){var d=a.split(".")[0],e=a.substring(d.length);b&&b!==d||c&&c!==e||delete la[a]})}function _(a,b){var c=W(),d=["margin","limit","padding","range","animate","snap","step","format"];d.forEach(function(b){void 0!==a[b]&&(i[b]=a[b])});var f=R(i);d.forEach(function(b){void 0!==a[b]&&(e[b]=f[b])}),f.spectrum.direction=ja.direction,ja=f.spectrum,e.margin=f.margin,e.limit=f.limit,e.padding=f.padding,ga=[],U(a.start||c,b)}var aa,ba,ca,da,ea=n(),fa=c,ga=[],ha=[],ia=!1,ja=e.spectrum,ka=[],la={};if(fa.noUiSlider)throw new Error("Slider was already initialized.");return r(fa),q(e.connect,aa),da={destroy:X,steps:Y,on:Z,off:$,get:W,set:U,reset:V,__moveHandles:function(a,b,c){D(a,b,ga,c)},options:i,updateOptions:_,target:fa,pips:x},L(e.events),U(e.start),e.pips&&x(e.pips),e.tooltips&&t(),da}function T(a,b){if(!a.nodeName)throw new Error("noUiSlider.create requires a single element.");var c=R(b,a),d=S(a,c,b);return a.noUiSlider=d,d}y.prototype.getMargin=function(a){var b=this.xNumSteps[0];if(b&&a/b%1!==0)throw new Error("noUiSlider: 'limit', 'margin' and 'padding' must be divisible by step.");return 2===this.xPct.length&&p(this.xVal,a)},y.prototype.toStepping=function(a){return a=t(this.xVal,this.xPct,a)},y.prototype.fromStepping=function(a){return u(this.xVal,this.xPct,a)},y.prototype.getStep=function(a){return a=v(this.xPct,this.xSteps,this.snap,a)},y.prototype.getNearbySteps=function(a){var b=s(a,this.xPct);return{stepBefore:{startValue:this.xVal[b-2],step:this.xNumSteps[b-2],highestStep:this.xHighestCompleteStep[b-2]},thisStep:{startValue:this.xVal[b-1],step:this.xNumSteps[b-1],highestStep:this.xHighestCompleteStep[b-1]},stepAfter:{startValue:this.xVal[b-0],step:this.xNumSteps[b-0],highestStep:this.xHighestCompleteStep[b-0]}}},y.prototype.countStepDecimals=function(){var a=this.xNumSteps.map(i);return Math.max.apply(null,a)},y.prototype.convert=function(a){return this.getStep(this.toStepping(a))};var U={to:function(a){return void 0!==a&&a.toFixed(2)},from:Number};return{create:T}});
\ No newline at end of file
Index: lams_central/web/includes/javascript/popper.min.js
===================================================================
diff -u
--- lams_central/web/includes/javascript/popper.min.js (revision 0)
+++ lams_central/web/includes/javascript/popper.min.js (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -0,0 +1,834 @@
+/*
+ Copyright (C) Federico Zivolo 2017
+ Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
+ */
+(function(e, t) {
+ 'object' == typeof exports && 'undefined' != typeof module ? module.exports = t() : 'function' == typeof define && define.amd ? define(t) : e.Popper = t()
+})(this, function() {
+ 'use strict';
+
+ function e(e) {
+ return e && '[object Function]' === {}.toString.call(e)
+ }
+
+ function t(e, t) {
+ if (1 !== e.nodeType) return [];
+ var o = window.getComputedStyle(e, null);
+ return t ? o[t] : o
+ }
+
+ function o(e) {
+ return 'HTML' === e.nodeName ? e : e.parentNode || e.host
+ }
+
+ function n(e) {
+ if (!e || -1 !== ['HTML', 'BODY', '#document'].indexOf(e.nodeName)) return window.document.body;
+ var i = t(e),
+ r = i.overflow,
+ p = i.overflowX,
+ s = i.overflowY;
+ return /(auto|scroll)/.test(r + s + p) ? e : n(o(e))
+ }
+
+ function r(e) {
+ var o = e && e.offsetParent,
+ i = o && o.nodeName;
+ return i && 'BODY' !== i && 'HTML' !== i ? -1 !== ['TD', 'TABLE'].indexOf(o.nodeName) && 'static' === t(o, 'position') ? r(o) : o : window.document.documentElement
+ }
+
+ function p(e) {
+ var t = e.nodeName;
+ return 'BODY' !== t && ('HTML' === t || r(e.firstElementChild) === e)
+ }
+
+ function s(e) {
+ return null === e.parentNode ? e : s(e.parentNode)
+ }
+
+ function d(e, t) {
+ if (!e || !e.nodeType || !t || !t.nodeType) return window.document.documentElement;
+ var o = e.compareDocumentPosition(t) & Node.DOCUMENT_POSITION_FOLLOWING,
+ i = o ? e : t,
+ n = o ? t : e,
+ a = document.createRange();
+ a.setStart(i, 0), a.setEnd(n, 0);
+ var f = a.commonAncestorContainer;
+ if (e !== f && t !== f || i.contains(n)) return p(f) ? f : r(f);
+ var l = s(e);
+ return l.host ? d(l.host, t) : d(e, s(t).host)
+ }
+
+ function a(e) {
+ var t = 1 < arguments.length && void 0 !== arguments[1] ? arguments[1] : 'top',
+ o = 'top' === t ? 'scrollTop' : 'scrollLeft',
+ i = e.nodeName;
+ if ('BODY' === i || 'HTML' === i) {
+ var n = window.document.documentElement,
+ r = window.document.scrollingElement || n;
+ return r[o]
+ }
+ return e[o]
+ }
+
+ function f(e, t) {
+ var o = 2 < arguments.length && void 0 !== arguments[2] && arguments[2],
+ i = a(t, 'top'),
+ n = a(t, 'left'),
+ r = o ? -1 : 1;
+ return e.top += i * r, e.bottom += i * r, e.left += n * r, e.right += n * r, e
+ }
+
+ function l(e, t) {
+ var o = 'x' === t ? 'Left' : 'Top',
+ i = 'Left' == o ? 'Right' : 'Bottom';
+ return +e['border' + o + 'Width'].split('px')[0] + +e['border' + i + 'Width'].split('px')[0]
+ }
+
+ function m(e, t, o, i) {
+ return _(t['offset' + e], o['client' + e], o['offset' + e], ie() ? o['offset' + e] + i['margin' + ('Height' === e ? 'Top' : 'Left')] + i['margin' + ('Height' === e ? 'Bottom' : 'Right')] : 0)
+ }
+
+ function h() {
+ var e = window.document.body,
+ t = window.document.documentElement,
+ o = ie() && window.getComputedStyle(t);
+ return {
+ height: m('Height', e, t, o),
+ width: m('Width', e, t, o)
+ }
+ }
+
+ function c(e) {
+ return se({}, e, {
+ right: e.left + e.width,
+ bottom: e.top + e.height
+ })
+ }
+
+ function g(e) {
+ var o = {};
+ if (ie()) try {
+ o = e.getBoundingClientRect();
+ var i = a(e, 'top'),
+ n = a(e, 'left');
+ o.top += i, o.left += n, o.bottom += i, o.right += n
+ } catch (e) {} else o = e.getBoundingClientRect();
+ var r = {
+ left: o.left,
+ top: o.top,
+ width: o.right - o.left,
+ height: o.bottom - o.top
+ },
+ p = 'HTML' === e.nodeName ? h() : {},
+ s = p.width || e.clientWidth || r.right - r.left,
+ d = p.height || e.clientHeight || r.bottom - r.top,
+ f = e.offsetWidth - s,
+ m = e.offsetHeight - d;
+ if (f || m) {
+ var g = t(e);
+ f -= l(g, 'x'), m -= l(g, 'y'), r.width -= f, r.height -= m
+ }
+ return c(r)
+ }
+
+ function u(e, o) {
+ var i = ie(),
+ r = 'HTML' === o.nodeName,
+ p = g(e),
+ s = g(o),
+ d = n(e),
+ a = t(o),
+ l = +a.borderTopWidth.split('px')[0],
+ m = +a.borderLeftWidth.split('px')[0],
+ h = c({
+ top: p.top - s.top - l,
+ left: p.left - s.left - m,
+ width: p.width,
+ height: p.height
+ });
+ if (h.marginTop = 0, h.marginLeft = 0, !i && r) {
+ var u = +a.marginTop.split('px')[0],
+ b = +a.marginLeft.split('px')[0];
+ h.top -= l - u, h.bottom -= l - u, h.left -= m - b, h.right -= m - b, h.marginTop = u, h.marginLeft = b
+ }
+ return (i ? o.contains(d) : o === d && 'BODY' !== d.nodeName) && (h = f(h, o)), h
+ }
+
+ function b(e) {
+ var t = window.document.documentElement,
+ o = u(e, t),
+ i = _(t.clientWidth, window.innerWidth || 0),
+ n = _(t.clientHeight, window.innerHeight || 0),
+ r = a(t),
+ p = a(t, 'left'),
+ s = {
+ top: r - o.top + o.marginTop,
+ left: p - o.left + o.marginLeft,
+ width: i,
+ height: n
+ };
+ return c(s)
+ }
+
+ function y(e) {
+ var i = e.nodeName;
+ return 'BODY' === i || 'HTML' === i ? !1 : 'fixed' === t(e, 'position') || y(o(e))
+ }
+
+ function w(e, t, i, r) {
+ var p = {
+ top: 0,
+ left: 0
+ },
+ s = d(e, t);
+ if ('viewport' === r) p = b(s);
+ else {
+ var a;
+ 'scrollParent' === r ? (a = n(o(e)), 'BODY' === a.nodeName && (a = window.document.documentElement)) : 'window' === r ? a = window.document.documentElement : a = r;
+ var f = u(a, s);
+ if ('HTML' === a.nodeName && !y(s)) {
+ var l = h(),
+ m = l.height,
+ c = l.width;
+ p.top += f.top - f.marginTop, p.bottom = m + f.top, p.left += f.left - f.marginLeft, p.right = c + f.left
+ } else p = f
+ }
+ return p.left += i, p.top += i, p.right -= i, p.bottom -= i, p
+ }
+
+ function v(e) {
+ var t = e.width,
+ o = e.height;
+ return t * o
+ }
+
+ function E(e, t, o, i, n) {
+ var r = 5 < arguments.length && void 0 !== arguments[5] ? arguments[5] : 0;
+ if (-1 === e.indexOf('auto')) return e;
+ var p = w(o, i, r, n),
+ s = {
+ top: {
+ width: p.width,
+ height: t.top - p.top
+ },
+ right: {
+ width: p.right - t.right,
+ height: p.height
+ },
+ bottom: {
+ width: p.width,
+ height: p.bottom - t.bottom
+ },
+ left: {
+ width: t.left - p.left,
+ height: p.height
+ }
+ },
+ d = Object.keys(s).map(function(e) {
+ return se({
+ key: e
+ }, s[e], {
+ area: v(s[e])
+ })
+ }).sort(function(e, t) {
+ return t.area - e.area
+ }),
+ a = d.filter(function(e) {
+ var t = e.width,
+ i = e.height;
+ return t >= o.clientWidth && i >= o.clientHeight
+ }),
+ f = 0 < a.length ? a[0].key : d[0].key,
+ l = e.split('-')[1];
+ return f + (l ? '-' + l : '')
+ }
+
+ function x(e, t, o) {
+ var i = d(t, o);
+ return u(o, i)
+ }
+
+ function O(e) {
+ var t = window.getComputedStyle(e),
+ o = parseFloat(t.marginTop) + parseFloat(t.marginBottom),
+ i = parseFloat(t.marginLeft) + parseFloat(t.marginRight),
+ n = {
+ width: e.offsetWidth + i,
+ height: e.offsetHeight + o
+ };
+ return n
+ }
+
+ function L(e) {
+ var t = {
+ left: 'right',
+ right: 'left',
+ bottom: 'top',
+ top: 'bottom'
+ };
+ return e.replace(/left|right|bottom|top/g, function(e) {
+ return t[e]
+ })
+ }
+
+ function S(e, t, o) {
+ o = o.split('-')[0];
+ var i = O(e),
+ n = {
+ width: i.width,
+ height: i.height
+ },
+ r = -1 !== ['right', 'left'].indexOf(o),
+ p = r ? 'top' : 'left',
+ s = r ? 'left' : 'top',
+ d = r ? 'height' : 'width',
+ a = r ? 'width' : 'height';
+ return n[p] = t[p] + t[d] / 2 - i[d] / 2, n[s] = o === s ? t[s] - i[a] : t[L(s)], n
+ }
+
+ function T(e, t) {
+ return Array.prototype.find ? e.find(t) : e.filter(t)[0]
+ }
+
+ function C(e, t, o) {
+ if (Array.prototype.findIndex) return e.findIndex(function(e) {
+ return e[t] === o
+ });
+ var i = T(e, function(e) {
+ return e[t] === o
+ });
+ return e.indexOf(i)
+ }
+
+ function N(t, o, i) {
+ var n = void 0 === i ? t : t.slice(0, C(t, 'name', i));
+ return n.forEach(function(t) {
+ t.function && console.warn('`modifier.function` is deprecated, use `modifier.fn`!');
+ var i = t.function || t.fn;
+ t.enabled && e(i) && (o.offsets.popper = c(o.offsets.popper), o.offsets.reference = c(o.offsets.reference), o = i(o, t))
+ }), o
+ }
+
+ function k() {
+ if (!this.state.isDestroyed) {
+ var e = {
+ instance: this,
+ styles: {},
+ attributes: {},
+ flipped: !1,
+ offsets: {}
+ };
+ e.offsets.reference = x(this.state, this.popper, this.reference), e.placement = E(this.options.placement, e.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding), e.originalPlacement = e.placement, e.offsets.popper = S(this.popper, e.offsets.reference, e.placement), e.offsets.popper.position = 'absolute', e = N(this.modifiers, e), this.state.isCreated ? this.options.onUpdate(e) : (this.state.isCreated = !0, this.options.onCreate(e))
+ }
+ }
+
+ function W(e, t) {
+ return e.some(function(e) {
+ var o = e.name,
+ i = e.enabled;
+ return i && o === t
+ })
+ }
+
+ function B(e) {
+ for (var t = [!1, 'ms', 'Webkit', 'Moz', 'O'], o = e.charAt(0).toUpperCase() + e.slice(1), n = 0; n < t.length - 1; n++) {
+ var i = t[n],
+ r = i ? '' + i + o : e;
+ if ('undefined' != typeof window.document.body.style[r]) return r
+ }
+ return null
+ }
+
+ function D() {
+ return this.state.isDestroyed = !0, W(this.modifiers, 'applyStyle') && (this.popper.removeAttribute('x-placement'), this.popper.style.left = '', this.popper.style.position = '', this.popper.style.top = '', this.popper.style[B('transform')] = ''), this.disableEventListeners(), this.options.removeOnDestroy && this.popper.parentNode.removeChild(this.popper), this
+ }
+
+ function H(e, t, o, i) {
+ var r = 'BODY' === e.nodeName,
+ p = r ? window : e;
+ p.addEventListener(t, o, {
+ passive: !0
+ }), r || H(n(p.parentNode), t, o, i), i.push(p)
+ }
+
+ function P(e, t, o, i) {
+ o.updateBound = i, window.addEventListener('resize', o.updateBound, {
+ passive: !0
+ });
+ var r = n(e);
+ return H(r, 'scroll', o.updateBound, o.scrollParents), o.scrollElement = r, o.eventsEnabled = !0, o
+ }
+
+ function A() {
+ this.state.eventsEnabled || (this.state = P(this.reference, this.options, this.state, this.scheduleUpdate))
+ }
+
+ function M(e, t) {
+ return window.removeEventListener('resize', t.updateBound), t.scrollParents.forEach(function(e) {
+ e.removeEventListener('scroll', t.updateBound)
+ }), t.updateBound = null, t.scrollParents = [], t.scrollElement = null, t.eventsEnabled = !1, t
+ }
+
+ function I() {
+ this.state.eventsEnabled && (window.cancelAnimationFrame(this.scheduleUpdate), this.state = M(this.reference, this.state))
+ }
+
+ function R(e) {
+ return '' !== e && !isNaN(parseFloat(e)) && isFinite(e)
+ }
+
+ function U(e, t) {
+ Object.keys(t).forEach(function(o) {
+ var i = ''; - 1 !== ['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(o) && R(t[o]) && (i = 'px'), e.style[o] = t[o] + i
+ })
+ }
+
+ function Y(e, t) {
+ Object.keys(t).forEach(function(o) {
+ var i = t[o];
+ !1 === i ? e.removeAttribute(o) : e.setAttribute(o, t[o])
+ })
+ }
+
+ function F(e, t, o) {
+ var i = T(e, function(e) {
+ var o = e.name;
+ return o === t
+ }),
+ n = !!i && e.some(function(e) {
+ return e.name === o && e.enabled && e.order < i.order
+ });
+ if (!n) {
+ var r = '`' + t + '`';
+ console.warn('`' + o + '`' + ' modifier is required by ' + r + ' modifier in order to work, be sure to include it before ' + r + '!')
+ }
+ return n
+ }
+
+ function j(e) {
+ return 'end' === e ? 'start' : 'start' === e ? 'end' : e
+ }
+
+ function K(e) {
+ var t = 1 < arguments.length && void 0 !== arguments[1] && arguments[1],
+ o = ae.indexOf(e),
+ i = ae.slice(o + 1).concat(ae.slice(0, o));
+ return t ? i.reverse() : i
+ }
+
+ function q(e, t, o, i) {
+ var n = e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),
+ r = +n[1],
+ p = n[2];
+ if (!r) return e;
+ if (0 === p.indexOf('%')) {
+ var s;
+ switch (p) {
+ case '%p':
+ s = o;
+ break;
+ case '%':
+ case '%r':
+ default:
+ s = i;
+ }
+ var d = c(s);
+ return d[t] / 100 * r
+ }
+ if ('vh' === p || 'vw' === p) {
+ var a;
+ return a = 'vh' === p ? _(document.documentElement.clientHeight, window.innerHeight || 0) : _(document.documentElement.clientWidth, window.innerWidth || 0), a / 100 * r
+ }
+ return r
+ }
+
+ function G(e, t, o, i) {
+ var n = [0, 0],
+ r = -1 !== ['right', 'left'].indexOf(i),
+ p = e.split(/(\+|\-)/).map(function(e) {
+ return e.trim()
+ }),
+ s = p.indexOf(T(p, function(e) {
+ return -1 !== e.search(/,|\s/)
+ }));
+ p[s] && -1 === p[s].indexOf(',') && console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');
+ var d = /\s*,\s*|\s+/,
+ a = -1 === s ? [p] : [p.slice(0, s).concat([p[s].split(d)[0]]), [p[s].split(d)[1]].concat(p.slice(s + 1))];
+ return a = a.map(function(e, i) {
+ var n = (1 === i ? !r : r) ? 'height' : 'width',
+ p = !1;
+ return e.reduce(function(e, t) {
+ return '' === e[e.length - 1] && -1 !== ['+', '-'].indexOf(t) ? (e[e.length - 1] = t, p = !0, e) : p ? (e[e.length - 1] += t, p = !1, e) : e.concat(t)
+ }, []).map(function(e) {
+ return q(e, n, t, o)
+ })
+ }), a.forEach(function(e, t) {
+ e.forEach(function(o, i) {
+ R(o) && (n[t] += o * ('-' === e[i - 1] ? -1 : 1))
+ })
+ }), n
+ }
+ for (var z = Math.min, V = Math.floor, _ = Math.max, X = ['native code', '[object MutationObserverConstructor]'], Q = function(e) {
+ return X.some(function(t) {
+ return -1 < (e || '').toString().indexOf(t)
+ })
+ }, J = 'undefined' != typeof window, Z = ['Edge', 'Trident', 'Firefox'], $ = 0, ee = 0; ee < Z.length; ee += 1)
+ if (J && 0 <= navigator.userAgent.indexOf(Z[ee])) {
+ $ = 1;
+ break
+ }
+ var i, te = J && Q(window.MutationObserver),
+ oe = te ? function(e) {
+ var t = !1,
+ o = 0,
+ i = document.createElement('span'),
+ n = new MutationObserver(function() {
+ e(), t = !1
+ });
+ return n.observe(i, {
+ attributes: !0
+ }),
+ function() {
+ t || (t = !0, i.setAttribute('x-index', o), ++o)
+ }
+ } : function(e) {
+ var t = !1;
+ return function() {
+ t || (t = !0, setTimeout(function() {
+ t = !1, e()
+ }, $))
+ }
+ },
+ ie = function() {
+ return void 0 == i && (i = -1 !== navigator.appVersion.indexOf('MSIE 10')), i
+ },
+ ne = function(e, t) {
+ if (!(e instanceof t)) throw new TypeError('Cannot call a class as a function')
+ },
+ re = function() {
+ function e(e, t) {
+ for (var o, n = 0; n < t.length; n++) o = t[n], o.enumerable = o.enumerable || !1, o.configurable = !0, 'value' in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
+ }
+ return function(t, o, i) {
+ return o && e(t.prototype, o), i && e(t, i), t
+ }
+ }(),
+ pe = function(e, t, o) {
+ return t in e ? Object.defineProperty(e, t, {
+ value: o,
+ enumerable: !0,
+ configurable: !0,
+ writable: !0
+ }) : e[t] = o, e
+ },
+ se = Object.assign || function(e) {
+ for (var t, o = 1; o < arguments.length; o++)
+ for (var i in t = arguments[o], t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
+ return e
+ },
+ de = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'],
+ ae = de.slice(3),
+ fe = {
+ FLIP: 'flip',
+ CLOCKWISE: 'clockwise',
+ COUNTERCLOCKWISE: 'counterclockwise'
+ },
+ le = function() {
+ function t(o, i) {
+ var n = this,
+ r = 2 < arguments.length && void 0 !== arguments[2] ? arguments[2] : {};
+ ne(this, t), this.scheduleUpdate = function() {
+ return requestAnimationFrame(n.update)
+ }, this.update = oe(this.update.bind(this)), this.options = se({}, t.Defaults, r), this.state = {
+ isDestroyed: !1,
+ isCreated: !1,
+ scrollParents: []
+ }, this.reference = o.jquery ? o[0] : o, this.popper = i.jquery ? i[0] : i, this.options.modifiers = {}, Object.keys(se({}, t.Defaults.modifiers, r.modifiers)).forEach(function(e) {
+ n.options.modifiers[e] = se({}, t.Defaults.modifiers[e] || {}, r.modifiers ? r.modifiers[e] : {})
+ }), this.modifiers = Object.keys(this.options.modifiers).map(function(e) {
+ return se({
+ name: e
+ }, n.options.modifiers[e])
+ }).sort(function(e, t) {
+ return e.order - t.order
+ }), this.modifiers.forEach(function(t) {
+ t.enabled && e(t.onLoad) && t.onLoad(n.reference, n.popper, n.options, t, n.state)
+ }), this.update();
+ var p = this.options.eventsEnabled;
+ p && this.enableEventListeners(), this.state.eventsEnabled = p
+ }
+ return re(t, [{
+ key: 'update',
+ value: function() {
+ return k.call(this)
+ }
+ }, {
+ key: 'destroy',
+ value: function() {
+ return D.call(this)
+ }
+ }, {
+ key: 'enableEventListeners',
+ value: function() {
+ return A.call(this)
+ }
+ }, {
+ key: 'disableEventListeners',
+ value: function() {
+ return I.call(this)
+ }
+ }]), t
+ }();
+ return le.Utils = ('undefined' == typeof window ? global : window).PopperUtils, le.placements = de, le.Defaults = {
+ placement: 'bottom',
+ eventsEnabled: !0,
+ removeOnDestroy: !1,
+ onCreate: function() {},
+ onUpdate: function() {},
+ modifiers: {
+ shift: {
+ order: 100,
+ enabled: !0,
+ fn: function(e) {
+ var t = e.placement,
+ o = t.split('-')[0],
+ i = t.split('-')[1];
+ if (i) {
+ var n = e.offsets,
+ r = n.reference,
+ p = n.popper,
+ s = -1 !== ['bottom', 'top'].indexOf(o),
+ d = s ? 'left' : 'top',
+ a = s ? 'width' : 'height',
+ f = {
+ start: pe({}, d, r[d]),
+ end: pe({}, d, r[d] + r[a] - p[a])
+ };
+ e.offsets.popper = se({}, p, f[i])
+ }
+ return e
+ }
+ },
+ offset: {
+ order: 200,
+ enabled: !0,
+ fn: function(e, t) {
+ var o, i = t.offset,
+ n = e.placement,
+ r = e.offsets,
+ p = r.popper,
+ s = r.reference,
+ d = n.split('-')[0];
+ return o = R(+i) ? [+i, 0] : G(i, p, s, d), 'left' === d ? (p.top += o[0], p.left -= o[1]) : 'right' === d ? (p.top += o[0], p.left += o[1]) : 'top' === d ? (p.left += o[0], p.top -= o[1]) : 'bottom' === d && (p.left += o[0], p.top += o[1]), e.popper = p, e
+ },
+ offset: 0
+ },
+ preventOverflow: {
+ order: 300,
+ enabled: !0,
+ fn: function(e, t) {
+ var o = t.boundariesElement || r(e.instance.popper);
+ e.instance.reference === o && (o = r(o));
+ var i = w(e.instance.popper, e.instance.reference, t.padding, o);
+ t.boundaries = i;
+ var n = t.priority,
+ p = e.offsets.popper,
+ s = {
+ primary: function(e) {
+ var o = p[e];
+ return p[e] < i[e] && !t.escapeWithReference && (o = _(p[e], i[e])), pe({}, e, o)
+ },
+ secondary: function(e) {
+ var o = 'right' === e ? 'left' : 'top',
+ n = p[o];
+ return p[e] > i[e] && !t.escapeWithReference && (n = z(p[o], i[e] - ('right' === e ? p.width : p.height))), pe({}, o, n)
+ }
+ };
+ return n.forEach(function(e) {
+ var t = -1 === ['left', 'top'].indexOf(e) ? 'secondary' : 'primary';
+ p = se({}, p, s[t](e))
+ }), e.offsets.popper = p, e
+ },
+ priority: ['left', 'right', 'top', 'bottom'],
+ padding: 5,
+ boundariesElement: 'scrollParent'
+ },
+ keepTogether: {
+ order: 400,
+ enabled: !0,
+ fn: function(e) {
+ var t = e.offsets,
+ o = t.popper,
+ i = t.reference,
+ n = e.placement.split('-')[0],
+ r = V,
+ p = -1 !== ['top', 'bottom'].indexOf(n),
+ s = p ? 'right' : 'bottom',
+ d = p ? 'left' : 'top',
+ a = p ? 'width' : 'height';
+ return o[s] < r(i[d]) && (e.offsets.popper[d] = r(i[d]) - o[a]), o[d] > r(i[s]) && (e.offsets.popper[d] = r(i[s])), e
+ }
+ },
+ arrow: {
+ order: 500,
+ enabled: !0,
+ fn: function(e, t) {
+ if (!F(e.instance.modifiers, 'arrow', 'keepTogether')) return e;
+ var o = t.element;
+ if ('string' == typeof o) {
+ if (o = e.instance.popper.querySelector(o), !o) return e;
+ } else if (!e.instance.popper.contains(o)) return console.warn('WARNING: `arrow.element` must be child of its popper element!'), e;
+ var i = e.placement.split('-')[0],
+ n = e.offsets,
+ r = n.popper,
+ p = n.reference,
+ s = -1 !== ['left', 'right'].indexOf(i),
+ d = s ? 'height' : 'width',
+ a = s ? 'top' : 'left',
+ f = s ? 'left' : 'top',
+ l = s ? 'bottom' : 'right',
+ m = O(o)[d];
+ p[l] - m < r[a] && (e.offsets.popper[a] -= r[a] - (p[l] - m)), p[a] + m > r[l] && (e.offsets.popper[a] += p[a] + m - r[l]);
+ var h = p[a] + p[d] / 2 - m / 2,
+ g = h - c(e.offsets.popper)[a];
+ return g = _(z(r[d] - m, g), 0), e.arrowElement = o, e.offsets.arrow = {}, e.offsets.arrow[a] = Math.round(g), e.offsets.arrow[f] = '', e
+ },
+ element: '[x-arrow]'
+ },
+ flip: {
+ order: 600,
+ enabled: !0,
+ fn: function(e, t) {
+ if (W(e.instance.modifiers, 'inner')) return e;
+ if (e.flipped && e.placement === e.originalPlacement) return e;
+ var o = w(e.instance.popper, e.instance.reference, t.padding, t.boundariesElement),
+ i = e.placement.split('-')[0],
+ n = L(i),
+ r = e.placement.split('-')[1] || '',
+ p = [];
+ switch (t.behavior) {
+ case fe.FLIP:
+ p = [i, n];
+ break;
+ case fe.CLOCKWISE:
+ p = K(i);
+ break;
+ case fe.COUNTERCLOCKWISE:
+ p = K(i, !0);
+ break;
+ default:
+ p = t.behavior;
+ }
+ return p.forEach(function(s, d) {
+ if (i !== s || p.length === d + 1) return e;
+ i = e.placement.split('-')[0], n = L(i);
+ var a = e.offsets.popper,
+ f = e.offsets.reference,
+ l = V,
+ m = 'left' === i && l(a.right) > l(f.left) || 'right' === i && l(a.left) < l(f.right) || 'top' === i && l(a.bottom) > l(f.top) || 'bottom' === i && l(a.top) < l(f.bottom),
+ h = l(a.left) < l(o.left),
+ c = l(a.right) > l(o.right),
+ g = l(a.top) < l(o.top),
+ u = l(a.bottom) > l(o.bottom),
+ b = 'left' === i && h || 'right' === i && c || 'top' === i && g || 'bottom' === i && u,
+ y = -1 !== ['top', 'bottom'].indexOf(i),
+ w = !!t.flipVariations && (y && 'start' === r && h || y && 'end' === r && c || !y && 'start' === r && g || !y && 'end' === r && u);
+ (m || b || w) && (e.flipped = !0, (m || b) && (i = p[d + 1]), w && (r = j(r)), e.placement = i + (r ? '-' + r : ''), e.offsets.popper = se({}, e.offsets.popper, S(e.instance.popper, e.offsets.reference, e.placement)), e = N(e.instance.modifiers, e, 'flip'))
+ }), e
+ },
+ behavior: 'flip',
+ padding: 5,
+ boundariesElement: 'viewport'
+ },
+ inner: {
+ order: 700,
+ enabled: !1,
+ fn: function(e) {
+ var t = e.placement,
+ o = t.split('-')[0],
+ i = e.offsets,
+ n = i.popper,
+ r = i.reference,
+ p = -1 !== ['left', 'right'].indexOf(o),
+ s = -1 === ['top', 'left'].indexOf(o);
+ return n[p ? 'left' : 'top'] = r[t] - (s ? n[p ? 'width' : 'height'] : 0), e.placement = L(t), e.offsets.popper = c(n), e
+ }
+ },
+ hide: {
+ order: 800,
+ enabled: !0,
+ fn: function(e) {
+ if (!F(e.instance.modifiers, 'hide', 'preventOverflow')) return e;
+ var t = e.offsets.reference,
+ o = T(e.instance.modifiers, function(e) {
+ return 'preventOverflow' === e.name
+ }).boundaries;
+ if (t.bottom < o.top || t.left > o.right || t.top > o.bottom || t.right < o.left) {
+ if (!0 === e.hide) return e;
+ e.hide = !0, e.attributes['x-out-of-boundaries'] = ''
+ } else {
+ if (!1 === e.hide) return e;
+ e.hide = !1, e.attributes['x-out-of-boundaries'] = !1
+ }
+ return e
+ }
+ },
+ computeStyle: {
+ order: 850,
+ enabled: !0,
+ fn: function(e, t) {
+ var o = t.x,
+ i = t.y,
+ n = e.offsets.popper,
+ p = T(e.instance.modifiers, function(e) {
+ return 'applyStyle' === e.name
+ }).gpuAcceleration;
+ void 0 !== p && console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');
+ var s, d, a = void 0 === p ? t.gpuAcceleration : p,
+ f = r(e.instance.popper),
+ l = g(f),
+ m = {
+ position: n.position
+ },
+ h = {
+ left: V(n.left),
+ top: V(n.top),
+ bottom: V(n.bottom),
+ right: V(n.right)
+ },
+ c = 'bottom' === o ? 'top' : 'bottom',
+ u = 'right' === i ? 'left' : 'right',
+ b = B('transform');
+ if (d = 'bottom' == c ? -l.height + h.bottom : h.top, s = 'right' == u ? -l.width + h.right : h.left, a && b) m[b] = 'translate3d(' + s + 'px, ' + d + 'px, 0)', m[c] = 0, m[u] = 0, m.willChange = 'transform';
+ else {
+ var y = 'bottom' == c ? -1 : 1,
+ w = 'right' == u ? -1 : 1;
+ m[c] = d * y, m[u] = s * w, m.willChange = c + ', ' + u
+ }
+ var v = {
+ "x-placement": e.placement
+ };
+ return e.attributes = se({}, v, e.attributes), e.styles = se({}, m, e.styles), e
+ },
+ gpuAcceleration: !0,
+ x: 'bottom',
+ y: 'right'
+ },
+ applyStyle: {
+ order: 900,
+ enabled: !0,
+ fn: function(e) {
+ return U(e.instance.popper, e.styles), Y(e.instance.popper, e.attributes), e.offsets.arrow && U(e.arrowElement, e.offsets.arrow), e
+ },
+ onLoad: function(e, t, o, i, n) {
+ var r = x(n, t, e),
+ p = E(o.placement, r, t, e, o.modifiers.flip.boundariesElement, o.modifiers.flip.padding);
+ return t.setAttribute('x-placement', p), U(t, {
+ position: 'absolute'
+ }), o
+ },
+ gpuAcceleration: void 0
+ }
+ }
+ }, le
+});
\ No newline at end of file
Index: lams_central/web/login.jsp
===================================================================
diff -u -r139e91caa1fc95af99802e31cb3a4b57ef7ebc5e -r32670937f259e2c8a712e1dd2cd6bb5731f466c9
--- lams_central/web/login.jsp (.../login.jsp) (revision 139e91caa1fc95af99802e31cb3a4b57ef7ebc5e)
+++ lams_central/web/login.jsp (.../login.jsp) (revision 32670937f259e2c8a712e1dd2cd6bb5731f466c9)
@@ -29,9 +29,13 @@
+
+
-
+
+
+
-
+
-